Cypress
npm install @tracera/cypress
Нужны Node.js ≥ 22.19 и Cypress ≥ 14 (см. Адаптеры автотестов). @tracera/cypress на npm.
В cypress.config.ts:
import { defineConfig } from 'cypress';
import { registerTraceraPlugin } from '@tracera/cypress';
export default defineConfig({
e2e: {
setupNodeEvents(on, config) {
return registerTraceraPlugin(on, config);
},
supportFile: 'cypress/support/e2e.ts',
},
});
В файле support:
import '@tracera/cypress/support';
Для Component Testing вызовите registerTraceraPlugin из component.setupNodeEvents и подключите тот же файл support в CT.
При повторах Cypress в отчёт уходит только финальная попытка. Если это повтор (retry > 0), во вкладке Env будет CYPRESS_RETRY (1 — второй запуск).
Переменные окружения и режим прогона: Адаптеры автотестов.
Привязка testCaseId и autotestName
Импортируйте tracera / annotations из @tracera/cypress/runtime или используйте cy.traceraTestCase после импорта support. Если не задать autotestName, адаптер берёт название теста Cypress.
В объявлении (предпочтительно — привязка сработает, даже если сразу вызвать this.skip()):
import { annotations } from '@tracera/cypress/runtime';
it('login', annotations(42, 'e2e/login'), () => {
cy.visit('/login');
cy.get('[data-testid=sign-in]').should('be.visible');
});
Внутри теста (необязательно, если кейс уже привязан через annotations):
import { tracera } from '@tracera/cypress/runtime';
it('login', () => {
tracera.testCase(42, 'e2e/login');
cy.visit('/login');
cy.get('[data-testid=sign-in]').should('be.visible');
});
Или: cy.traceraTestCase(42, "e2e/login").
Шаги
Используйте tracera.step (или cy.traceraStep). После import "@tracera/cypress/support" стандартные beforeEach / afterEach обёрнуты — шаги внутри них попадают в Предусловие / Постусловие.
import { tracera } from '@tracera/cypress/runtime';
beforeEach(() => {
tracera.step('open shop', () => {
cy.visit('/shop');
});
});
it('checkout', () => {
tracera.testCase(10, 'e2e/checkout');
tracera.step('add to cart', () => {
cy.get('[data-testid=add]').click();
});
});
afterEach(() => {
tracera.step('cleanup', () => {
// …
});
});
Комментарии, ошибки и вложения
Внутри шага — поля этого шага. Вне шага — поля результата. Не больше 10 вложений у результата и у каждого шага. Скриншоты при падении пересылаются, когда плагин зарегистрирован.
import { tracera } from '@tracera/cypress/runtime';
it('login', () => {
tracera.testCase(42, 'e2e/login');
tracera.comment('result-level note');
tracera.error('result-level error text');
tracera.step('open login', () => {
cy.visit('/login');
tracera.comment('landed on login');
tracera.attachment({
fileName: 'suite-log.txt',
mimeType: 'text/plain',
data: 'finished login flow',
});
});
});