krona-staff/tests/e2e/evidence/e2e-results.json
grok 537b784da3 docs(e2e): REPORT.md (описание PR) и свежие evidence прогона
Зачем: PR в Forgejo создать нельзя (нет API-токена), поэтому описание
изменений, таблица green/red по ID с командами и фактическим выводом, итог
N5 до/после, валидация CI и N13 лежат в репозитории рядом с тестами.
Evidence перезаписаны финальным прогоном ./scripts/test/ci-local.sh, чтобы
отчёт ссылался на те же числа, что в файлах (38 red / 9 green, храповик OK,
format красный из-за F14). Число файлов F14 в комментарии ci.yml и в
заметках уточнено до 23 по этому замеру.
2026-09-26 15:18:31 +07:00

669 lines
53 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"numTotalTestSuites": 10,
"numPassedTestSuites": 2,
"numFailedTestSuites": 8,
"numPendingTestSuites": 0,
"numTotalTests": 47,
"numPassedTests": 9,
"numFailedTests": 38,
"numPendingTests": 0,
"numTodoTests": 0,
"snapshot": {
"added": 0,
"failure": false,
"filesAdded": 0,
"filesRemoved": 0,
"filesRemovedList": [],
"filesUnmatched": 0,
"filesUpdated": 0,
"matched": 0,
"total": 0,
"unchecked": 0,
"uncheckedKeysByFile": [],
"unmatched": 0,
"updated": 0,
"didUpdate": false
},
"startTime": 1790408012144,
"success": false,
"testResults": [
{
"assertionResults": [
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [HARNESS] сервер отвечает live/ready (ready проверяет БД)",
"status": "passed",
"title": "[HARNESS] сервер отвечает live/ready (ready проверяет БД)",
"duration": 32.192098,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [HARNESS] БД: PostgreSQL 17, приложение под ролью без SUPERUSER/BYPASSRLS, мигратор без SUPERUSER",
"status": "passed",
"title": "[HARNESS] БД: PostgreSQL 17, приложение под ролью без SUPERUSER/BYPASSRLS, мигратор без SUPERUSER",
"duration": 14.342552000000012,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [HARNESS] миграции применены мигратором, app-роль не видит schema_migrations",
"status": "passed",
"title": "[HARNESS] миграции применены мигратором, app-роль не видит schema_migrations",
"duration": 14.26604900000001,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [HARNESS] токены: без токена 401, случайный токен 401, manager-токен 200",
"status": "passed",
"title": "[HARNESS] токены: без токена 401, случайный токен 401, manager-токен 200",
"duration": 13.863121000000007,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [HARNESS] терминал: отметка сотрудника из импорта принимается (201)",
"status": "passed",
"title": "[HARNESS] терминал: отметка сотрудника из импорта принимается (201)",
"duration": 24.62379200000001,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [CTRL] RBAC: терминал не видит портал и не создаёт сотрудников; сотрудник видит только себя",
"status": "passed",
"title": "[CTRL] RBAC: терминал не видит портал и не создаёт сотрудников; сотрудник видит только себя",
"duration": 23.691180000000003,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["HARNESS: реальный сервер + PostgreSQL 17"],
"fullName": "HARNESS: реальный сервер + PostgreSQL 17 [CTRL] уволенный сотрудник теряет доступ (401)",
"status": "passed",
"title": "[CTRL] уволенный сотрудник теряет доступ (401)",
"duration": 23.254977999999994,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
}
],
"startTime": 1790408019083,
"endTime": 1790408019229.255,
"status": "passed",
"message": "",
"name": "/workspace/krona-staff/tests/e2e/00-harness.e2e.ts"
},
{
"assertionResults": [
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N1] менеджер создаёт сотрудника через POST /employees → 201",
"status": "failed",
"title": "[N1] менеджер создаёт сотрудника через POST /employees → 201",
"duration": 38.316193,
"failureMessages": [
"AssertionError: HTTP 500 {\"statusCode\":500,\"code\":\"42P08\",\"error\":\"Internal Server Error\",\"message\":\"inconsistent types deduced for parameter $2\"}: expected 500 to be 201 // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:55:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N2] подтверждение смены, расчёт и утверждение зарплаты проходят (200) и начисляют 8 ч × ставка",
"status": "failed",
"title": "[N2] подтверждение смены, расчёт и утверждение зарплаты проходят (200) и начисляют 8 ч × ставка",
"duration": 110.697531,
"failureMessages": [
"AssertionError: подтверждение смены: HTTP 500 {\"statusCode\":500,\"code\":\"23502\",\"error\":\"Internal Server Error\",\"message\":\"null value in column \\\"occurred_at\\\" of relation \\\"staff_outbox\\\" violates not-null constraint\"}: expected 500 to be 200 // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:73:81\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N4] пересекающиеся расчёты не начисляют одну смену дважды",
"status": "failed",
"title": "[N4] пересекающиеся расчёты не начисляют одну смену дважды",
"duration": 66.33918700000004,
"failureMessages": [
"AssertionError: подтверждение смены (предусловие, см. N2): HTTP 500 {\"statusCode\":500,\"code\":\"23502\",\"error\":\"Internal Server Error\",\"message\":\"null value in column \\\"occurred_at\\\" of relation \\\"staff_outbox\\\" violates not-null constraint\"}: expected 500 to be 200 // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:104:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N3] push-подписка на внутренний адрес отклоняется, сервер не подключается к 127.0.0.1",
"status": "failed",
"title": "[N3] push-подписка на внутренний адрес отклоняется, сервер не подключается к 127.0.0.1",
"duration": 2544.330582,
"failureMessages": [
"AssertionError: подписка: HTTP 201 {\"id\":\"01M3EA4FH3FG4Q3YEKXYQ8Y4Q5\",\"endpoint\":\"https://127.0.0.1:36027/e2e-internal-admin\"}: expected { status: 201, connections: 1 } to deeply equal { status: toSatisfy{…}, …(1) }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:161:9\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N9] чужой push-endpoint нельзя перепривязать к другому сотруднику",
"status": "failed",
"title": "[N9] чужой push-endpoint нельзя перепривязать к другому сотруднику",
"duration": 44.48753099999976,
"failureMessages": [
"AssertionError: HTTP 201 {\"id\":\"01M3EA4J0JSPFRDF22J6E2CEY1\",\"endpoint\":\"https://fcm.googleapis.com/fcm/send/e2e-d464594734e6ddf8569ec571f5832dbf\"}: expected { status: 201, …(1) } to deeply equal { status: toSatisfy{…}, …(1) }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:191:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N12] PUT pay-assignment отвергает лишние поля и нереальные суммы (400)",
"status": "failed",
"title": "[N12] PUT pay-assignment отвергает лишние поля и нереальные суммы (400)",
"duration": 31.35817700000007,
"failureMessages": [
"AssertionError: HTTP 200 {\"id\":\"01M3EA4J1PHXWHFMAMYYVRMK3E\",\"employee_id\":\"01M3EA4J151B1H9D5AKAR29AN9\",\"org_unit_id\":null,\"pay_rule_id\":\"01M3EA4FCDRQSS6V8H5Q6XS615\",\"pay_rule_code\":\"hourly\",\"pay_rule_name\":\"Почасовая (стажёр, дополнительный сотрудник)\",\"rate_minor\":12345,\"percent_bp\":0,\"guarantee_minor\":0,\"pool_weight_bp\":0… | HTTP 200 {\"id\":\"01M3EA4J1PHXWHFMAMYYVRMK3E\",\"employee_id\":\"01M3EA4J151B1H9D5AKAR29AN9\",\"org_unit_id\":null,\"pay_rule_id\":\"01M3EA4FCDRQSS6V8H5Q6XS615\",\"pay_rule_code\":\"hourly\",\"pay_rule_name\":\"Почасовая (стажёр, дополнительный сотрудник)\",\"rate_minor\":9007199254740991,\"percent_bp\":0,\"guarantee_minor\":900719925…: expected { extra: 200, huge: 200 } to deeply equal { extra: 400, huge: 400 }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:215:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N10] терминальный токен не читает справочники профессий и точек (403)",
"status": "failed",
"title": "[N10] терминальный токен не читает справочники профессий и точек (403)",
"duration": 4.364047000000028,
"failureMessages": [
"AssertionError: expected { professions: 200, units: 200 } to deeply equal { professions: 403, units: 403 }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:224:70\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [F2] standalone без токенов не выдаёт права менеджера анонимному запросу (401)",
"status": "failed",
"title": "[F2] standalone без токенов не выдаёт права менеджера анонимному запросу (401)",
"duration": 19.630533999999898,
"failureMessages": [
"AssertionError: expected { portal: 200, payroll: 200, …(1) } to deeply equal { portal: 401, payroll: 401, …(1) }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:237:85\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [F3] cookie сессии не содержит сырой токен и отзывается при выходе",
"status": "failed",
"title": "[F3] cookie сессии не содержит сырой токен и отзывается при выходе",
"duration": 8.088321000000178,
"failureMessages": [
"AssertionError: expected { rawTokenInCookie: true, …(1) } to deeply equal { rawTokenInCookie: false, …(1) }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:255:91\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [F10] мутация по cookie без Origin отклоняется (CSRF, 403)",
"status": "failed",
"title": "[F10] мутация по cookie без Origin отклоняется (CSRF, 403)",
"duration": 5.457843000000139,
"failureMessages": [
"AssertionError: HTTP 201 {\"id\":\"01M3EA4J31CEM99Y9708PNVE90\",\"code\":\"profession-01m3ea4j31cem99y9708pnve90\",\"name\":\"E2E-CSRF-профессия-c30803\",\"status\":\"active\"}: expected 201 to be 403 // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:269:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [F7] повтор Idempotency-Key с другим телом не создаёт второе событие",
"status": "failed",
"title": "[F7] повтор Idempotency-Key с другим телом не создаёт второе событие",
"duration": 31.478251999999884,
"failureMessages": [
"AssertionError: expected { first: 201, secondCreated: true } to deeply equal { first: 201, secondCreated: false }\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:288:75\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [N11] импорт с неверным kind начисления → 400, а не 500",
"status": "failed",
"title": "[N11] импорт с неверным kind начисления → 400, а не 500",
"duration": 24.907294000000093,
"failureMessages": [
"AssertionError: HTTP 500 {\"statusCode\":500,\"code\":\"23514\",\"error\":\"Internal Server Error\",\"message\":\"new row for relation \\\"staff_payroll_ledger\\\" violates check constraint \\\"staff_payroll_ledger_kind_check\\\"\"}: expected 500 to be 400 // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:311:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Основной API на реальной PostgreSQL"],
"fullName": "Основной API на реальной PostgreSQL [F4] перебор ключей входа ограничивается (429 не позже 30 неверных попыток)",
"status": "failed",
"title": "[F4] перебор ключей входа ограничивается (429 не позже 30 неверных попыток)",
"duration": 75.38818200000014,
"failureMessages": [
"AssertionError: статусы: 401: expected false to be true // Object.is equality\n at /workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts:324:84\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
}
],
"startTime": 1790408015147,
"endTime": 1790408018151.3882,
"status": "failed",
"message": "",
"name": "/workspace/krona-staff/tests/e2e/10-core-defects.e2e.ts"
},
{
"assertionResults": [
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-A] устройство не может само подтвердить смену (status=confirmed отклоняется)",
"status": "failed",
"title": "[SYNC-A] устройство не может само подтвердить смену (status=confirmed отклоняется)",
"duration": 86.95440500000001,
"failureMessages": [
"AssertionError: HTTP 200 {\"results\":[{\"idempotency_key\":\"e2e-01M3EA4JPXC3E39GZMHFH33H92\",\"command_type\":\"upsert_work_session\",\"status\":\"applied\",\"result\":{\"id\":\"01M3EA4JPXQPVQDPGEA3YVFPXV\",\"revision\":1,\"status\":\"applied\"}}]}: expected { http: 200, result: 'applied', …(1) } to deeply equal { http: 200, result: 'rejected', …(1) }\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:86:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-B] устройство не может утвердить табель (status=approved отклоняется)",
"status": "failed",
"title": "[SYNC-B] устройство не может утвердить табель (status=approved отклоняется)",
"duration": 32.361658000000006,
"failureMessages": [
"AssertionError: HTTP 200 {\"results\":[{\"idempotency_key\":\"e2e-01M3EA4JR4CST4PE643FC043K9\",\"command_type\":\"upsert_timesheet_entry\",\"status\":\"applied\",\"result\":{\"id\":\"01M3EA4JR43V65BMVJVX5DHSV0\",\"revision\":1,\"status\":\"applied\"}}]}: expected { result: 'applied', …(1) } to deeply equal { result: 'rejected', stored: null }\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:109:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-C0] начальная загрузка (pull без курсора) работает на реальной БД (200)",
"status": "failed",
"title": "[SYNC-C0] начальная загрузка (pull без курсора) работает на реальной БД (200)",
"duration": 39.13565999999997,
"failureMessages": [
"AssertionError: HTTP 500 {\"statusCode\":500,\"code\":\"42703\",\"error\":\"Internal Server Error\",\"message\":\"column \\\"status\\\" does not exist\"}: expected 500 to be 200 // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:120:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-C] начальная загрузка >100 сущностей отдаёт все сущности постранично",
"status": "failed",
"title": "[SYNC-C] начальная загрузка >100 сущностей отдаёт все сущности постранично",
"duration": 54.852048000000025,
"failureMessages": [
"AssertionError: HTTP 500 {\"statusCode\":500,\"code\":\"42703\",\"error\":\"Internal Server Error\",\"message\":\"column \\\"status\\\" does not exist\"}: expected 500 to be 200 // Object.is equality\n at pullAll (/workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:51:57)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:130:25\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-D] изменения, сделанные через портал, попадают в инкрементальный pull",
"status": "failed",
"title": "[SYNC-D] изменения, сделанные через портал, попадают в инкрементальный pull",
"duration": 40.97763200000003,
"failureMessages": [
"AssertionError: expected false to be true // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:151:95\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-E] отметка уволенного сотрудника через sync отклоняется",
"status": "failed",
"title": "[SYNC-E] отметка уволенного сотрудника через sync отклоняется",
"duration": 23.937388999999996,
"failureMessages": [
"AssertionError: HTTP 200 {\"results\":[{\"idempotency_key\":\"e2e-01M3EA4JXB10Y1W7WAT3QXPJXR\",\"command_type\":\"attendance_event\",\"status\":\"applied\",\"result\":{\"event_id\":\"01M3EA4JXD7TMSBAMMAK6HMXK2\",\"status\":\"accepted\"}}]}: expected 'applied' to be 'rejected' // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:171:77\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-F] отметка через sync сохраняет точку устройства; чужая точка в payload отклоняется",
"status": "failed",
"title": "[SYNC-F] отметка через sync сохраняет точку устройства; чужая точка в payload отклоняется",
"duration": 42.41749800000002,
"failureMessages": [
"AssertionError: HTTP 200 {\"results\":[{\"idempotency_key\":\"e2e-01M3EA4JYFDZ0AAZYVEF6G72T2\",\"command_type\":\"attendance_event\",\"status\":\"applied\",\"result\":{\"event_id\":\"01M3EA4JYH12S10KQ4NWN232FM\",\"status\":\"accepted\"}},{\"idempotency_key\":\"e2e-01M3EA4JYFDXJXPH923SG1E832\",\"command_type\":\"attendance_event\",\"status\":\"applied\",\"resul…: expected { Object (ownOrgUnit, foreign) } to deeply equal { …(2) }\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:202:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-G] битая команда в пакете отклоняется по отдельности, остальные применяются (не 500)",
"status": "failed",
"title": "[SYNC-G] битая команда в пакете отклоняется по отдельности, остальные применяются (не 500)",
"duration": 20.59652299999999,
"failureMessages": [
"AssertionError: HTTP 500 {\"statusCode\":500,\"code\":\"22007\",\"error\":\"Internal Server Error\",\"message\":\"invalid input syntax for type timestamp with time zone: \\\"e2e-not-a-timestamp\\\"\"}: expected { http: 500, statuses: [] } to deeply equal { http: 200, statuses: [ …(2) ] }\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:225:7\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-H] регистрация устройства по cookie с чужим Origin отклоняется (CSRF, 403)",
"status": "failed",
"title": "[SYNC-H] регистрация устройства по cookie с чужим Origin отклоняется (CSRF, 403)",
"duration": 9.081312000000025,
"failureMessages": [
"AssertionError: HTTP 201 {\"device\":{\"id\":\"01M3EA4JZKVD04KCMNCGGW1EAH\",\"tenant_id\":\"01M3EA4DJNEY3HRCYSBSX43XW0\",\"device_code\":\"E2E-5J7EDPFQV6\",\"name\":\"E2E-CSRF-терминал-34e01a\",\"token_hint\":\"kstaff_dev_01M3E\",\"status\":\"active\",\"allowed_scopes\":[\"attendance:sync\"],\"registered_at\":\"2026-09-26T07:33:38.935Z\",\"created_by\":\"01M3E…: expected 201 to be 403 // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:236:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-I] без настроенных токенов анонимный запрос не регистрирует устройство (401)",
"status": "failed",
"title": "[SYNC-I] без настроенных токенов анонимный запрос не регистрирует устройство (401)",
"duration": 6.548922000000005,
"failureMessages": [
"AssertionError: HTTP 201 {\"device\":{\"id\":\"01M3EA4JZWQF4S3SXWCX77J9ST\",\"tenant_id\":\"01M3EA4DJNEY3HRCYSBSX43XW0\",\"device_code\":\"E2E-KS5GF18F83\",\"name\":\"E2E-Анонимный терминал-75d36d\",\"token_hint\":\"kstaff_dev_01M3E\",\"status\":\"active\",\"allowed_scopes\":[\"attendance:sync\"],\"registered_at\":\"2026-09-26T07:33:38.940Z\",\"created_by\":\"…: expected 201 to be 401 // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:247:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-J] отметка через sync вне окна времени (2001 год) отклоняется, как в POST /attendance/events",
"status": "failed",
"title": "[SYNC-J] отметка через sync вне окна времени (2001 год) отклоняется, как в POST /attendance/events",
"duration": 23.565251999999987,
"failureMessages": [
"AssertionError: HTTP 200 {\"results\":[{\"idempotency_key\":\"e2e-01M3EA4K0JQNMDJTDAM1PZ1J8K\",\"command_type\":\"attendance_event\",\"status\":\"applied\",\"result\":{\"event_id\":\"01M3EA4K0NB5RS8GACHWC7N2C2\",\"status\":\"accepted\"}}]}: expected 'applied' to be 'rejected' // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:260:77\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-K] ack курсора из будущего (больше выданного сервером) отклоняется (400)",
"status": "failed",
"title": "[SYNC-K] ack курсора из будущего (больше выданного сервером) отклоняется (400)",
"duration": 6.953785000000039,
"failureMessages": [
"AssertionError: HTTP 200 {\"acknowledged\":true,\"cursor\":\"cur_999999999_fd163ccb01a6\",\"acknowledged_at\":\"2026-09-26T07:33:38.972Z\"}: expected 200 to be 400 // Object.is equality\n at /workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts:275:57\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Офлайн-синхронизация на реальной PostgreSQL"],
"fullName": "Офлайн-синхронизация на реальной PostgreSQL [SYNC-L] отозванное устройство не может синхронизироваться (403) — позитивный контроль",
"status": "passed",
"title": "[SYNC-L] отозванное устройство не может синхронизироваться (403) — позитивный контроль",
"duration": 8.451247999999964,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
}
],
"startTime": 1790408018587,
"endTime": 1790408018982.4512,
"status": "failed",
"message": "",
"name": "/workspace/krona-staff/tests/e2e/20-sync-defects.e2e.ts"
},
{
"assertionResults": [
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-01] менеджер точки A запускает расчёт для точки B → 403",
"status": "failed",
"title": "[OWN-01] менеджер точки A запускает расчёт для точки B → 403",
"duration": 109.84663699999999,
"failureMessages": [
"AssertionError: C1 POST /access-grants (point_manager): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:94:22\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-02] менеджер точки отправляет пакет на согласование → 403",
"status": "failed",
"title": "[OWN-02] менеджер точки отправляет пакет на согласование → 403",
"duration": 64.021771,
"failureMessages": [
"AssertionError: C1 POST /access-grants (point_manager): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:105:22\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-03] бухгалтер отправляет пакет → успех, каждый директор получает ровно одно уведомление",
"status": "failed",
"title": "[OWN-03] бухгалтер отправляет пакет → успех, каждый директор получает ровно одно уведомление",
"duration": 1.5183850000000234,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:118:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-04] бухгалтер пытается подписать пакет → 403",
"status": "failed",
"title": "[OWN-04] бухгалтер пытается подписать пакет → 403",
"duration": 1.8508840000000077,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:133:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-05] до подписи директора в ledger нет начислений и выплат",
"status": "failed",
"title": "[OWN-05] до подписи директора в ledger нет начислений и выплат",
"duration": 1.9114280000000008,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:141:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-06] подпись директора → начисления и выплаты в ledger, пакет и смены неизменяемы",
"status": "failed",
"title": "[OWN-06] подпись директора → начисления и выплаты в ledger, пакет и смены неизменяемы",
"duration": 1.5373430000000212,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:148:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-07] смена изменена после отправки → подписать нельзя (409), пакет возвращён бухгалтеру",
"status": "failed",
"title": "[OWN-07] смена изменена после отправки → подписать нельзя (409), пакет возвращён бухгалтеру",
"duration": 1.4993349999999737,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:173:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-08] возврат с комментарием → пакет у бухгалтера, комментарий сохранён",
"status": "failed",
"title": "[OWN-08] возврат с комментарием → пакет у бухгалтера, комментарий сохранён",
"duration": 2.188139000000035,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:195:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-09] сотрудник точки A отработал смену в точке B → смена попадает в зарплату точки B",
"status": "failed",
"title": "[OWN-09] сотрудник точки A отработал смену в точке B → смена попадает в зарплату точки B",
"duration": 2.2691649999999868,
"failureMessages": [
"AssertionError: C1 POST /access-grants (accountant): HTTP 404 {\"message\":\"Route POST:/api/v1/staff/access-grants not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 201 // Object.is equality\n at grant (/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:28:94)\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:213:24\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-10] сотрудник без согласия на биометрию → сервер сообщает терминалу «регистрация запрещена»",
"status": "failed",
"title": "[OWN-10] сотрудник без согласия на биометрию → сервер сообщает терминалу «регистрация запрещена»",
"duration": 15.068132999999989,
"failureMessages": [
"AssertionError: C3: HTTP 404 {\"message\":\"Route GET:/api/v1/staff/terminal/employees/01M3EA4JGPPB7M0G78QQBQBJ1M/enrollment not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 200 // Object.is equality\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:241:66\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["Решения владельца: роли, пакеты зарплаты, согласие на биометрию"],
"fullName": "Решения владельца: роли, пакеты зарплаты, согласие на биометрию [OWN-11] согласие отозвано → статус для терминала меняется",
"status": "failed",
"title": "[OWN-11] согласие отозвано → статус для терминала меняется",
"duration": 14.774637000000041,
"failureMessages": [
"AssertionError: C3 PUT biometric-consent: HTTP 404 {\"message\":\"Route PUT:/api/v1/staff/employees/01M3EA4JH57XZ361XBC2Z7SA6J/biometric-consent not found\",\"error\":\"Not Found\",\"statusCode\":404}: expected 404 to be 200 // Object.is equality\n at /workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts:255:86\n at processTicksAndRejections (node:internal/process/task_queues:105:5)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:20"
],
"meta": {},
"tags": [],
"benchmarks": []
}
],
"startTime": 1790408018262,
"endTime": 1790408018478.7747,
"status": "failed",
"message": "",
"name": "/workspace/krona-staff/tests/e2e/30-owner-decisions.e2e.ts"
},
{
"assertionResults": [
{
"ancestorTitles": ["deploy/pilot/compose.yaml"],
"fullName": "deploy/pilot/compose.yaml [PILOT-1] все подставляемые переменные обязательны: ${VAR:?сообщение}",
"status": "failed",
"title": "[PILOT-1] все подставляемые переменные обязательны: ${VAR:?сообщение}",
"duration": 5.8893739999999895,
"failureMessages": [
"AssertionError: переменные без :? — пустое значение молча попадёт в контейнер: expected [ 'STANDALONE_MANAGER_TOKEN', …(13) ] to deeply equal []\n at /workspace/krona-staff/tests/e2e/40-compose-pilot.e2e.ts:34:87\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:1628:35\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:26\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3319:20\n at new Promise (<anonymous>)\n at runWithCancel (file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3314:10)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3299:20\n at new Promise (<anonymous>)\n at runWithTimeout (file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3257:10)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3876:64"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["deploy/pilot/compose.yaml"],
"fullName": "deploy/pilot/compose.yaml [PILOT-2] ни один сервис не запускается с NODE_ENV=development",
"status": "failed",
"title": "[PILOT-2] ни один сервис не запускается с NODE_ENV=development",
"duration": 1.0336859999999888,
"failureMessages": [
"AssertionError: expected [ 'app' ] to deeply equal []\n at /workspace/krona-staff/tests/e2e/40-compose-pilot.e2e.ts:41:23\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:1628:35\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:2783:26\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3319:20\n at new Promise (<anonymous>)\n at runWithCancel (file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3314:10)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3299:20\n at new Promise (<anonymous>)\n at runWithTimeout (file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3257:10)\n at file:///workspace/krona-staff/node_modules/vitest/dist/chunks/run.C5UmxDPh.js:3876:64"
],
"meta": {},
"tags": [],
"benchmarks": []
},
{
"ancestorTitles": ["deploy/pilot/compose.yaml"],
"fullName": "deploy/pilot/compose.yaml [PILOT-3] у сервиса app нет учётных данных мигратора",
"status": "passed",
"title": "[PILOT-3] у сервиса app нет учётных данных мигратора",
"duration": 0.5442440000000062,
"failureMessages": [],
"meta": {},
"tags": [],
"benchmarks": []
}
],
"startTime": 1790408019346,
"endTime": 1790408019353.5442,
"status": "failed",
"message": "",
"name": "/workspace/krona-staff/tests/e2e/40-compose-pilot.e2e.ts"
}
]
}