Spec-Zone.ru › Playwright

GenericAssertions

Класс GenericAssertions предоставляет методы проверок, которые можно использовать для проверки любых значений в тестах. Новый экземпляр GenericAssertions создаётся вызовом expect():

import { test, expect } from '@playwright/test';

test('assert a value', async ({ page }) => {
  const value = 1;
  expect(value).toBe(2);
});

Методы​

any​

expect.any() соответствует любому экземпляру объекта, созданному с помощью конструктора, или соответствующему примитивному типу. Используйте его внутри expect(value).toEqual() для сопоставления с образцом.

Использование

// Match instance of a class.
class Example {}
expect(new Example()).toEqual(expect.any(Example));

// Match any number.
expect({ prop: 1 }).toEqual({ prop: expect.any(Number) });

// Match any string.
expect('abc').toEqual(expect.any(String));

Аргументы

  • constructor Function

    Конструктор ожидаемого объекта, например ExampleClass, или примитивный тип-обёртка, например Number.

anything​

expect.anything() соответствует всему, кроме null и undefined. Используйте его внутри expect(value).toEqual() для сопоставления с образцом.

Использование

const value = { prop: 1 };
expect(value).toEqual({ prop: expect.anything() });
expect(value).not.toEqual({ otherProp: expect.anything() });

arrayContaining​

expect.arrayContaining() соответствует массиву, содержащему все элементы ожидаемого массива в любом порядке. Обратите внимание, что полученный массив может быть надмножеством ожидаемого и содержать дополнительные элементы.

Используйте этот метод внутри expect(value).toEqual() для сопоставления с образцом.

Использование

expect([1, 2, 3]).toEqual(expect.arrayContaining([3, 1]));
expect([1, 2, 3]).not.toEqual(expect.arrayContaining([1, 4]));

Аргументы

  • expected Array<Object>

    Ожидаемый массив, являющийся подмножеством полученного значения.

arrayOf​

expect.arrayOf() соответствует массиву объектов, созданных с помощью конструктора, или соответствующему примитивному типу. Используйте его внутри expect(value).toEqual() для сопоставления с образцом.

Использование

// Match instance of a class.
class Example {}
expect([new Example(), new Example()]).toEqual(expect.arrayOf(Example));

// Match any string.
expect(['a', 'b', 'c']).toEqual(expect.arrayOf(String));

Аргументы

  • constructor Function

    Конструктор ожидаемого объекта, например ExampleClass, или примитивный тип-обёртка, например Number.

closeTo​

Сравнивает числа с плавающей точкой на приблизительное равенство. Используйте этот метод внутри expect(value).toEqual() для сопоставления с образцом. При сравнении только двух чисел предпочтительнее использовать expect(value).toBeCloseTo().

Использование

expect({ prop: 0.1 + 0.2 }).not.toEqual({ prop: 0.3 });
expect({ prop: 0.1 + 0.2 }).toEqual({ prop: expect.closeTo(0.3, 5) });

Аргументы

  • expected number

    Ожидаемое значение.

  • numDigits number (необязательно)

    Количество знаков после десятичной точки, которые должны совпадать.

objectContaining​

expect.objectContaining() соответствует объекту, который содержит и совпадает по всем свойствам ожидаемого объекта. Обратите внимание, что полученный объект может быть надмножеством ожидаемого и содержать дополнительные свойства.

Используйте этот метод внутри expect(value).toEqual() для сопоставления с образцом. Свойства объекта могут быть сопоставителями, чтобы сделать проверку менее строгой. См. примеры.

Использование

// Assert some of the properties.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ foo: 1 }));

// Matchers can be used on the properties as well.
expect({ foo: 1, bar: 2 }).toEqual(expect.objectContaining({ bar: expect.any(Number) }));

// Complex matching of sub-properties.
expect({
  list: [1, 2, 3],
  obj: { prop: 'Hello world!', another: 'some other value' },
  extra: 'extra',
}).toEqual(expect.objectContaining({
  list: expect.arrayContaining([2, 3]),
  obj: expect.objectContaining({ prop: expect.stringContaining('Hello') }),
}));

Аргументы

  • expected Object

    Ожидаемый шаблон объекта, содержащий подмножество свойств.

stringContaining​

expect.stringContaining() соответствует строке, содержащей ожидаемую подстроку. Используйте этот метод внутри expect(value).toEqual() для сопоставления с образцом.

Использование

expect('Hello world!').toEqual(expect.stringContaining('Hello'));

Аргументы

  • expected string

    Ожидаемая подстрока.

stringMatching​

expect.stringMatching() соответствует полученной строке, которая, в свою очередь, соответствует ожидаемому шаблону. Используйте этот метод внутри expect(value).toEqual() для сопоставления с образцом.

Использование

expect('123ms').toEqual(expect.stringMatching(/\d+m?s/));

// Inside another matcher.
expect({
  status: 'passed',
  time: '123ms',
}).toEqual({
  status: expect.stringMatching(/passed|failed/),
  time: expect.stringMatching(/\d+m?s/),
});

Аргументы

  • expected string | RegExp

    Шаблон, которому должна соответствовать ожидаемая строка.

toBe​

Сравнивает значение с ожидаемым, вызывая Object.is. Этот метод сравнивает объекты по ссылке, а не по содержимому, подобно оператору строгого равенства ===.

Использование

const value = { prop: 1 };
expect(value).toBe(value);
expect(value).not.toBe({});
expect(value.prop).toBe(1);

Аргументы

  • expected Object

    Ожидаемое значение.

toBeCloseTo​

Сравнивает числа с плавающей точкой на приблизительное равенство. Используйте этот метод вместо expect(value).toBe() при сравнении чисел с плавающей точкой.

Использование

expect(0.1 + 0.2).not.toBe(0.3);
expect(0.1 + 0.2).toBeCloseTo(0.3, 5);

Аргументы

  • expected number

    Ожидаемое значение.

  • numDigits number (необязательно)

    Количество знаков после десятичной точки, которые должны совпадать.

toBeDefined​

Проверяет, что значение не является undefined.

Использование

const value = null;
expect(value).toBeDefined();

toBeFalsy​

Проверяет, что значение является ложным в булевом контексте, то есть одним из false, 0, '', null, undefined или NaN. Используйте этот метод, если конкретное значение не имеет значения.

Использование

const value = null;
expect(value).toBeFalsy();

toBeGreaterThan​

Проверяет, что value > expected для числовых значений и значений типа big integer.

Использование

const value = 42;
expect(value).toBeGreaterThan(1);

Аргументы

  • expected number | [bigint]

    Значение для сравнения.

toBeGreaterThanOrEqual​

Проверяет, что value >= expected для числовых значений и значений типа big integer.

Использование

const value = 42;
expect(value).toBeGreaterThanOrEqual(42);

Аргументы

  • expected number | [bigint]

    Значение для сравнения.

toBeInstanceOf​

Проверяет, что значение является экземпляром класса. Использует оператор instanceof.

Использование

expect(page).toBeInstanceOf(Page);

class Example {}
expect(new Example()).toBeInstanceOf(Example);

Аргументы

  • expected Function

    Класс или функция-конструктор.

toBeLessThan​

Проверяет, что value < expected для числовых значений и значений типа big integer.

Использование

const value = 42;
expect(value).toBeLessThan(100);

Аргументы

  • expected number | [bigint]

    Значение для сравнения.

toBeLessThanOrEqual​

Проверяет, что value <= expected для числовых значений и значений типа big integer.

Использование

const value = 42;
expect(value).toBeLessThanOrEqual(42);

Аргументы

  • expected number | [bigint]

    Значение для сравнения.

toBeNaN​

Проверяет, что значение является NaN.

Использование

const value = NaN;
expect(value).toBeNaN();

toBeNull​

Проверяет, что значение является null.

Использование

const value = null;
expect(value).toBeNull();

toBeTruthy​

Проверяет, что значение является истинным в булевом контексте, то есть любым значением, кроме false, 0, '', null, undefined или NaN. Используйте этот метод, если конкретное значение не имеет значения.

Использование

const value = { example: 'value' };
expect(value).toBeTruthy();

toBeUndefined​

Проверяет, что значение является undefined.

Использование

const value = undefined;
expect(value).toBeUndefined();

toContain(expected)​

Проверяет, что строковое значение содержит ожидаемую подстроку. Сравнение чувствительно к регистру.

Использование

const value = 'Hello, World';
expect(value).toContain('World');
expect(value).toContain(',');

Аргументы

  • expected string

    Ожидаемая подстрока.

toContain(expected)​

Проверяет, что значение является Array или Set и содержит ожидаемый элемент.

Использование

const value = [1, 2, 3];
expect(value).toContain(2);
expect(new Set(value)).toContain(2);

Аргументы

  • expected Object

    Ожидаемое значение в коллекции.

toContainEqual​

Проверяет, что значение является Array или Set и содержит элемент, равный ожидаемому.

Для объектов этот метод рекурсивно проверяет равенство всех полей, а не сравнивает объекты по ссылке, как это делает expect(value).toContain().

Для примитивных значений этот метод эквивалентен expect(value).toContain().

Использование

const value = [
  { example: 1 },
  { another: 2 },
  { more: 3 },
];
expect(value).toContainEqual({ another: 2 });
expect(new Set(value)).toContainEqual({ another: 2 });

Аргументы

  • expected Object

    Ожидаемое значение в коллекции.

toEqual​

Сравнивает содержимое значения с содержимым ожидаемого, выполняя проверку «глубокого равенства».

Для объектов этот метод рекурсивно проверяет равенство всех полей, а не сравнивает объекты по ссылке, как это делает expect(value).toBe().

Для примитивных значений этот метод эквивалентен expect(value).toBe().

Использование

const value = { prop: 1 };
expect(value).toEqual({ prop: 1 });

Нестрогое равенство

expect(value).toEqual() выполняет проверку глубокого равенства, сравнивая содержимое полученного и ожидаемого значений. Чтобы убедиться, что две ссылки на объект указывают на один и тот же экземпляр, используйте вместо этого expect(value).toBe().

expect(value).toEqual() игнорирует свойства и элементы массива undefined и не требует, чтобы типы объектов совпадали. Для более строгого сопоставления используйте expect(value).toStrictEqual().

Сопоставление с образцом

expect(value).toEqual() также можно использовать для сопоставления с образцом объектов, массивов и примитивных типов с помощью следующих сопоставителей:

  • expect(value).any()
  • expect(value).anything()
  • expect(value).arrayContaining()
  • expect(value).arrayOf()
  • expect(value).closeTo()
  • expect(value).objectContaining()
  • expect(value).stringContaining()
  • expect(value).stringMatching()

Ниже приведён пример проверки некоторых значений внутри сложного объекта:

expect({
  list: [1, 2, 3],
  obj: { prop: 'Hello world!', another: 'some other value' },
  extra: 'extra',
}).toEqual(expect.objectContaining({
  list: expect.arrayContaining([2, 3]),
  obj: expect.objectContaining({ prop: expect.stringContaining('Hello') }),
}));

Аргументы

  • expected Object

    Ожидаемое значение.

toHaveLength​

Проверяет, что свойство .length значения равно ожидаемому. Полезно для массивов и строк.

Использование

expect('Hello, World').toHaveLength(12);
expect([1, 2, 3]).toHaveLength(3);

Аргументы

  • expected number

    Ожидаемая длина.

toHaveProperty​

Проверяет, что свойство по указанному keyPath существует у объекта, и при необходимости проверяет, что значение свойства равно ожидаемому. Равенство проверяется рекурсивно, как и в expect(value).toEqual().

Использование

const value = {
  a: {
    b: [42],
  },
  c: true,
};
expect(value).toHaveProperty('a.b');
expect(value).toHaveProperty('a.b', [42]);
expect(value).toHaveProperty('a.b[0]', 42);
expect(value).toHaveProperty('c');
expect(value).toHaveProperty('c', true);

Аргументы

  • keyPath string

    Путь к свойству. Используйте точечную нотацию a.b для проверки вложенных свойств и индексированную нотацию a[2] для проверки вложенных элементов массива.

  • expected Object (необязательно)

    Необязательное ожидаемое значение для сравнения со значением свойства.

toMatch​

Проверяет, что строковое значение соответствует регулярному выражению.

Использование

const value = 'Is 42 enough?';
expect(value).toMatch(/Is \d+ enough/);

Аргументы

  • expected RegExp | string

    Регулярное выражение для сопоставления.

toMatchObject​

Сравнивает содержимое значения с содержимым ожидаемого, выполняя проверку «глубокого равенства». В отличие от expect(value).toEqual(), допускает наличие в значении дополнительных свойств, поэтому можно проверить только подмножество свойств объекта.

При сравнении массивов количество элементов должно совпадать, а каждый элемент проверяется рекурсивно.

Использование

const value = {
  a: 1,
  b: 2,
  c: true,
};
expect(value).toMatchObject({ a: 1, c: true });
expect(value).toMatchObject({ b: 2, c: true });

expect([{ a: 1, b: 2 }]).toMatchObject([{ a: 1 }]);

Аргументы

  • expected Object | Array

    Ожидаемое значение объекта для сопоставления.

toStrictEqual​

Сравнивает содержимое значения с содержимым ожидаемого и их типы.

Отличия от expect(value).toEqual():

  • Проверяются ключи со свойствами, имеющими значение undefined. Например, { a: undefined, b: 2 } не соответствует { b: 2 }.
  • Проверяется разреженность массивов. Например, [, 1] не соответствует [undefined, 1].
  • Проверяется равенство типов объектов. Например, экземпляр класса с полями a и b не будет равен литеральному объекту с полями a и b.

Использование

const value = { prop: 1 };
expect(value).toStrictEqual({ prop: 1 });

Аргументы

  • expected Object

    Ожидаемое значение.

toThrow​

Вызывает функцию и проверяет, что она выбрасывает ошибку.

При необходимости сравнивает ошибку с ожидаемым значением. Допустимые ожидаемые значения:

  • Регулярное выражение — сообщение об ошибке должно соответствовать шаблону.
  • Строка — сообщение об ошибке должно содержать подстроку.
  • Объект Error — сообщение об ошибке должно быть равно свойству message объекта.
  • Класс ошибки — объект ошибки должен быть экземпляром этого класса.

Использование

expect(() => {
  throw new Error('Something bad');
}).toThrow();

expect(() => {
  throw new Error('Something bad');
}).toThrow(/something/);

expect(() => {
  throw new Error('Something bad');
}).toThrow(Error);

Аргументы

  • expected Object (необязательно)

    Ожидаемое сообщение об ошибке или объект ошибки.

toThrowError​

Псевдоним для expect(value).toThrow().

Использование

expect(() => {
  throw new Error('Something bad');
}).toThrowError();

Аргументы

  • expected Object (необязательно)

    Ожидаемое сообщение об ошибке или объект ошибки.

Свойства​

not​

Заставляет проверку проверять противоположное условие.

Использование

Например, следующий код проходит проверку:

const value = 1;
expect(value).not.toBe(2);

Тип

  • GenericAssertions

rejects​

Используйте .rejects, чтобы извлечь причину отклонённого промиса и продолжить цепочку любым другим сопоставителем. Если промис выполнен, проверка завершается ошибкой.

Например, этот код проверяет, что промис отклоняется с причиной 'octopus':

test('rejects to octopus', async () => {
  await expect(Promise.reject(new Error('octopus'))).rejects.toThrow('octopus');
});

Использование

expect(value).rejects

Тип

  • GenericAssertions

resolves​

Используйте resolves, чтобы извлечь значение выполненного промиса и продолжить цепочку любым другим сопоставителем. Если промис отклонён, проверка завершается ошибкой.

Например, этот код проверяет, что промис выполнен и результирующее значение равно 'lemon':

test('resolves to lemon', async () => {
  await expect(Promise.resolve('lemon')).resolves.toBe('lemon');
});

Использование

expect(value).resolves

Тип

  • GenericAssertions

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-genericassertions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API