diff --git a/scripts/classify-changes.mjs b/scripts/classify-changes.mjs index 0c925102..62c7daea 100755 --- a/scripts/classify-changes.mjs +++ b/scripts/classify-changes.mjs @@ -144,6 +144,12 @@ export function mutantsRequested() { * Где нужен один ответ — CLI отдаёт один ответ. */ export function screenshotsGateMode(inputs) { + // #760: на ветке задачи — только предупреждение, даже при `full=true`. + // Конвейер диспатчит полный Validate для `ci:golden`, а отпечаток на `dev` + // между бетами законно устаревает (#479): строгий режим заставлял каждую + // визуальную задачу переснимать кадры после любого сдвига `dev`. Кандидат + // собирается на `dev` — там режим прежний. + if (isTaskBranch(inputs?.refName)) return 'warn'; return heavyGatesRequested(inputs) ? 'strict' : 'warn'; } diff --git a/test/classify-changes.test.mjs b/test/classify-changes.test.mjs index 5047cdd6..002a08d1 100644 --- a/test/classify-changes.test.mjs +++ b/test/classify-changes.test.mjs @@ -197,6 +197,12 @@ test('#586: режим гейта скриншотов приходит одни assert.equal(screenshotsGateMode({ eventName: 'workflow_dispatch', fullInput: 'false' }), 'warn'); assert.equal(screenshotsGateMode({ eventName: 'pull_request' }), 'strict'); assert.equal(screenshotsGateMode({ eventName: 'schedule' }), 'strict'); + // #760: полный Validate ветки задачи (`ci:golden`) судит отпечаток мягко, + // кандидат на `dev` — строго, как прежде. + assert.equal(screenshotsGateMode({ eventName: 'workflow_dispatch', fullInput: 'true', refName: 'issue/740-stairs' }), 'warn'); + assert.equal(screenshotsGateMode({ eventName: 'workflow_dispatch', fullInput: 'true', refName: 'refs/heads/issue/718-moon' }), 'warn'); + assert.equal(screenshotsGateMode({ eventName: 'workflow_dispatch', fullInput: 'true', refName: 'dev' }), 'strict'); + assert.equal(screenshotsGateMode({ eventName: 'push', headMessage: 'x\n\nRelease: v1.2.3', refName: 'dev' }), 'strict', 'кандидат на dev'); // Регрессия, ради которой заведён #586: у `--heavy` вывод ДВУХСТРОЧНЫЙ, и // сравнение всего вывода со строкой `heavy=true` не совпадает никогда.