Задать вопрос
Alexandroppolus
@Alexandroppolus
кодир

Как в своих тестовых утилитах для playwright корректно показывать строку с ошибкой?

Вот, например, я написал утилиту (файл utils.js):
export function check1(value) {
    expect(value).toBe(123);
}


Вызываю в тесте (файл Preved.test.js):
import { check1 } from './utils';

test('описание', () => {
    // ....
    check1(val);
    // ....
});


Если проверка не пройдена, то в сообщении об ошибке мне подсветится строка из файла utils.ts, потому что toBe вызван непосредственно там. А хочется чтобы подсветило строку в файле Preved.test.js, в которой вызывается check1

Как это обстряпать? Наверняка вопрос решался не раз и не два, но что-то не понимаю, по каким словам яндексить..
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Kentavr16
@Kentavr16
long cold winter
Нужно добавить кастомные матчеры через расширение базовых. матчеров Вот пример

Матчер:
import { expect } from '@playwright/test';

const customExpect = expect.extend({
  toBeEvenValue(received) {
    const pass = received % 2 === 0;
    if (pass) {
      return {
        message: () => `expected ${received} not to be even`,
        pass: true,
      };
    } else {
      return {
        message: () => `expected ${received} to be even`,
        pass: false,
      };
    }
  },
});

export default customExpect;


Спека:

import expect from "../example"
import { test } from "@playwright/test";

test("exampleCheck",() => {
    expect(1).toBeEvenValue();
})


Вывод консоли:

Error: expected 1 to be even

      3 |
      4 | test("exampleCheck",() => {
    > 5 |     expect(1).toBeEvenValue();
        |               ^
      6 | })
        at C:\Users\blablabla\ex.spec.ts:5:15


наверняка можно другим путем, но лезть смотреть в библиотеку нет желания.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы