Всем привет! Я всегда скептически смотрел на фреймворки автоматизации тестирования с двойной целью — покрытие тестированием UI и API. Обычно вы запускаете разные уровни тестов в разных тестовых запусках (или проектах событий), поскольку каждый из них, вероятно, имеет свои собственные , и . зависимости конфигурация, переменные среды Недавно я взглянул на то, что может предложить с точки зрения тестирования , и сравнил это со своим опытом работы , так что вот чем я хочу поделиться со всеми вами… Playwright API с Cypress Кипарис некоторое время назад сделал возможным тестирование . о том, насколько хорош этот инструмент с точки зрения тестирования , с примерами. Cypress API На учебном портале вы можете найти статью API Производительность установки Чтобы запускать тесты, вам необходимо установить зависимости проекта, верно? Что ж, поставляется с , и его установка может быть весьма избыточной (и трудоемкой), если вы хотите запускать исключительно тесты (скажем, у вас есть отдельные задания в CI для запуска тестов пользовательского интерфейса и API, как это обычно бывает). Cypress электронным браузером API Выглядит не очень хорошо, да? ☝️ Кроме того, когда вы запускаете тесты - он все равно запускает браузер. API Тестовый пример Простой тест с будет выглядеть так: API Cypress it('Sign in with valid credentials', () => { cy.request('POST', '/auth', { login: Cypress.env('username'), password: Cypress.env('password'), }).should(response => { expect(response.body.token).to.be.a('string') expect(response.status).to.eq(200) }) }) Выглядит довольно просто и понятно, да? Здесь важно сказать, что это общий синтаксис , вместо записи каждого вывода в переменную (хотя ). Cypress то есть связывание элементов в цепочку это возможно с некоторыми изменениями Драматург Как и , представляет собой среду автоматизации тестирования — вы можете использовать или (средство запуска тестов, библиотеку утверждений, инструмент автоматизации браузера, HTTP-клиент, репортер и т. д.). Cypress Playwright только инструмент автоматизации браузера всю платформу Производительность установки Разница здесь в том, что не поставляется с браузерами из коробки — их нужно установить отдельной командой (если вы этого хотите). Playwright Здесь это имеет огромное значение, поскольку с точки зрения запуска исключительно тестов он не будет запускать какой-либо браузер или любое другое настольное приложение и сэкономит некоторое время выполнения и ресурсы на вашем компьютере. API Тестовый пример Простой тест с будет выглядеть так: API Playwright import {test, expect} from '@playwright/test' test('Sign in with valid credentials', async ({request}) => { const response = await request.post('/auth', { data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, }) expect(response.status()).toEqual(200) expect(await response.json()).toEqual({ token: expect.any(String), }) }) Я хотел бы выделить утверждения объектов: Jest-подобный синтаксис expect(await response.json()).toEqual({ token: expect.any(String), }) Этот синтаксис позволяет вам проверить всю структуру объекта с помощью всего лишь одного вызова ☝️ expect Заключение Тесты API должны быть небольшими и легкими, поскольку для их запуска не требуется слишком много усилий. Подведем итоги вышеизложенному… Производительность установки ✅ выигрывает благодаря более быстрой чистой установке из коробки . Драматург в 13 раз ℹ️ Вы можете сократить время установки в , если или . Cypress CI используете образ с предустановленными зависимостями кешируете их в своем CI- хранилище Производительность запуска ✅ выигрывает, поскольку ему не требуется браузер для запуска тестов API, поэтому он сразу переходит к делу. Playwright ℹ️ Невозможно «не запускать» браузер в тестах API, так как это часть логики фреймворка. Тестовый синтаксис Здесь невозможно определить победителя, так как объективного преимущества ни у , ни у нет. Сайпресса Драматурга У них обоих довольно простой синтаксис с небольшими различиями. Я бы сказал, что это решение тестировщика — выбрать то, что ему здесь нравится. Общий Я могу с уверенностью сказать, что использовать для автоматизации тестирования достаточно безопасно из-за его производительности. Было бы разумным решением, если бы у вас уже были тесты с этой платформой. Playwright API пользовательского интерфейса Мой совет тем, кто использует для тестов и хочет охватить слой — лучше используйте что-нибудь другое ( + , пример можно посмотреть ). Cypress UI- API Jest Axios там