This module is distributed via npm which is bundled with node and
should be installed as one of your project's devDependencies
:
npm i -D odottaa
- Import
odottaa
module - Extend expect with custom API matchers
// 1. In your playwright.config.ts
import { expect } from '@playwright/test';
import playwrightApiMatchers from 'odottaa';
// 2. extend expect with custom API matchers
expect.extend(playwrightApiMatchers);
// 1. In your playwright.config.js
const { expect } = require('@playwright/test');
const { default: playwrightApiMatchers } = require('odottaa');
// 2. extend expect with custom API matchers
expect.extend(playwrightApiMatchers);
Use toHaveStatusCode
matcher to verify that the response's status code is equal to the expected status code
const response = await request.get('https://example.com/');
await expect(response).toHaveStatusCode(201);
Use toHaveStatusText
matcher to verify that the response' status text is equal to the expected status text
const response = await request.get('https://example.com/404');
await expect(response).toHaveStatusText('Not Found');
Use toBeCreated
matcher to verify that the response's status code is 201
const response = await request.post('https://example.com/create');
await expect(response).toBeCreated();
Use toBeUnauthorized
matcher to verify that the response's status code is 401
const response = await request.post('https://example.com/create');
await expect(response).toBeUnauthorized();
Use toBeForbidden
matcher to verify that the response's status code is 403
const response = await request.post('https://example.com/create');
await expect(response).toBeForbidden();
Use toBeNotFound
matcher to verify that the response's status code is 404
const response = await request.post('https://example.com/list');
await expect(response).toBeNotFound();
Use toHaveJSON
matcher to verify that the response's body json is equal to the all properties of object instances (also known as "deep" equality)
const response = await request.get('https://example.com/data.json');
// e.g. response { name: 'Ben', age: 37 }
await expect(response).toHaveJSON({
name: 'Ben',
age: 37
});
Use toContainJSON
matcher to verify that the response's body array contains that an item with a specific structure and values is contained in an array.
const response = await request.get('https://example.com/data.json');
// e.g. response [{ name: 'Ben', age: 37 }, { name: 'Anna', age: 26 }]
await expect(response).toContainJSON({
name: 'Ben',
age: 37
});
Use toMatchJSON
matcher to verify that the response's body json matches a subset of the properties of an object. It'll match received objects with properties that are not in the expected object.
const response = await request.get('https://example.com/data.json');
// e.g. response [{ name: 'Ben', age: 37 }, { name: 'Anna', age: 26 }]
await expect(response).toMatchJSON({
name: 'John Doe',
});
Use toHaveHeader
matcher to verify that the response's headers contains the expected header and value
const response = await request.get('https://example.com');
// Asserts that the response's headers contains the header 'content-length'
await expect(response).toHaveHeader('content-length');
// Asserts that the response's headers contains the header 'content-length' with value '22'
await expect(response).toHaveHeader('content-length', '22');
Use toHaveHeaders
matcher to verify that the response's headers contains the expected header
const response = await request.get('https://example.com');
// Single
await expect(response).toHaveHeaders({ 'content-length': '22' });
// Multiple
await expect(response).toHaveHeaders({ 'content-type': 'text/html', 'content-length': '22' });
Use toHaveContentType
matcher to verify that the response' headers content type is equal to the expected type
const response = await request.get('https://example.com/');
await expect(response).toHaveContentType('text/html');
Use toContainTextContent
matcher to verify that the response' body text contains the expected text
const response = await request.get('https://example.com/');
await expect(response).toContainTextContent('Hello, World!');
Use toHaveLocation
matcher to verify that the response' headers location is equal to the expected location
const response = await request.get('https://example.com/');
await expect(response).toHaveLocation('/home');
Use toBeRedirected
matcher to verify that the response' url is being redirected to the expected url
const response = await request.get('https://example.com/user/profile');
await expect(response).toBeRedirected('https://example.com/auth/login');
Yevhen Laichenkov [email protected]