{
  "generatedAt": "2026-11-06T20:48:48.121Z",
  "playwrightVersion": "1.65.0",
  "nodeVersion": "v24.19.0",
  "origin": "Real Playwright Test processes against the bundled synthetic application on 127.0.0.1. Browser execution is not performed by the public workshop.",
  "healthy": {
    "passed": 18,
    "failed": 0,
    "projects": [
      {
        "name": "chromium",
        "passed": 9,
        "failed": 0
      },
      {
        "name": "webkit",
        "passed": 9,
        "failed": 0
      }
    ]
  },
  "bugs": {
    "detected": 9,
    "total": 9,
    "project": "chromium-bugs",
    "expectedExitCode": 1
  },
  "unverifiedProjects": [
    {
      "name": "firefox",
      "reason": "Firefox 159 official Windows build could not start: SideBySide activation error, missing mozglue assembly. Clean official reinstallation had the same result. No Firefox test is counted as passed.",
      "command": "npm run test:firefox"
    }
  ],
  "scenarios": [
    {
      "id": "form",
      "title": "Форма: проверить сохранение",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Появляется сообщение об успехе, но запись не добавляется.",
        "assertion": "Error: expect(locator).toContainText(expected) failed\nLocator: getByTestId('created-request')\nExpected substring: \"Команда Кедр\"\nTimeout: 1800ms\nError: element(s) not found\nCall log:\n  - Expect \"toContainText\" getByTestId('created-request') with timeout 1800ms\n  - waiting for getByTestId('created-request')"
      }
    },
    {
      "id": "filter",
      "title": "Поиск: проверить найденные строки",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Поле поиска меняется, но таблица не фильтруется.",
        "assertion": "Error: expect(locator).toHaveCount(expected) failed\nLocator:  getByTestId('request-row')\nExpected: 1\nReceived: 6\nTimeout:  1800ms\nCall log:\n  - Expect \"toHaveCount\" getByTestId('request-row') with timeout 1800ms\n  - waiting for getByTestId('request-row')"
      }
    },
    {
      "id": "dialog",
      "title": "Диалог: отменить и подтвердить",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Кнопка «Отмена» ошибочно удаляет запись.",
        "assertion": "Error: expect(locator).toContainText(expected) failed\nLocator: getByTestId('draft-item')\nExpected substring: \"Коммерческое предложение\"\nTimeout: 1800ms\nError: element(s) not found\nCall log:\n  - Expect \"toContainText\" getByTestId('draft-item') with timeout 1800ms\n  - waiting for getByTestId('draft-item')"
      }
    },
    {
      "id": "upload",
      "title": "Файл: проверить выбранный документ",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Вместо имени показывается общая надпись «Файл выбран».",
        "assertion": "Error: expect(locator).toHaveText(expected) failed\nLocator:  getByTestId('file-name')\nExpected: \"synthetic.txt\"\nReceived: \"Файл выбран\"\nTimeout:  1800ms\nCall log:\n  - Expect \"toHaveText\" getByTestId('file-name') with timeout 1800ms\n  - waiting for getByTestId('file-name')"
      }
    },
    {
      "id": "download",
      "title": "Скачивание: проверить содержимое CSV",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Экспорт теряет последнюю заявку, хотя файл скачивается.",
        "assertion": "Error: expect(received).toHaveLength(expected)\nExpected length: 4\nReceived length: 3\nReceived array:  [\"id,client,status\", \"RQ-101,Команда Кедр,new\", \"RQ-102,Студия Липа,in_progress\"]"
      }
    },
    {
      "id": "navigation",
      "title": "Мобильное меню: перейти и закрыть",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Ссылка видна и нажимается, но переход не происходит.",
        "assertion": "Error: expect(locator).toHaveText(expected) failed\nLocator:  getByTestId('navigation-page')\nExpected: \"Отчёты сервиса\"\nReceived: \"Обзор сервиса\"\nTimeout:  1800ms\nCall log:\n  - Expect \"toHaveText\" getByTestId('navigation-page') with timeout 1800ms\n  - waiting for getByTestId('navigation-page')"
      }
    },
    {
      "id": "network",
      "title": "Сеть: ошибка и повтор",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "HTTP 503 ошибочно показывается как успех, кнопки повтора нет.",
        "assertion": "Error: expect(locator).toBeVisible() failed\nLocator: getByText('Не удалось загрузить данные', { exact: true })\nExpected: visible\nTimeout: 1800ms\nError: element(s) not found\nCall log:\n  - Expect \"toBeVisible\" getByText('Не удалось загрузить данные', { exact: true }) with timeout 1800ms\n  - waiting for getByText('Не удалось загрузить данные', { exact: true })"
      }
    },
    {
      "id": "waiting",
      "title": "Ожидание: дождаться результата",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Сообщение «готово» появляется, а показатель так и остаётся пустым.",
        "assertion": "Error: expect(locator).toHaveText(expected) failed\nLocator:  getByTestId('report-count')\nExpected: \"14\"\nReceived: \"—\"\nTimeout:  1800ms\nCall log:\n  - Expect \"toHaveText\" getByTestId('report-count') with timeout 1800ms\n  - waiting for getByTestId('report-count')"
      }
    },
    {
      "id": "isolation",
      "title": "Сессии: проверить независимое состояние",
      "healthy": [
        {
          "project": "chromium",
          "status": "passed"
        },
        {
          "project": "webkit",
          "status": "passed"
        }
      ],
      "bug": {
        "status": "detected",
        "expectedFailureReason": "Для новой сессии задан неправильный начальный вид.",
        "assertion": "Error: expect(locator).not.toBeChecked() failed\nLocator:  getByRole('checkbox', { name: 'Плотный вид', exact: true })\nExpected: not checked\nReceived: checked\nTimeout:  1800ms\nCall log:\n  - Expect \"not toBeChecked\" getByRole('checkbox', { name: 'Плотный вид', exact: true }) with timeout 1800ms\n  - waiting for getByRole('checkbox', { name: 'Плотный вид', exact: true })"
      }
    }
  ]
}
