Снимки Cypress DOM и согласованное изменение изображений в облаке
Сохранить страницу при неудачном тесте
Cyclope: сохраните полную страницу со стилями, если тест Cypress не пройден
Используйте LocalStorage из Cypress Test для установки исходных данных
Тестирование перетаскивания элементов
Введение в команду cy.session
Бонус 39: Сохраняйте всю HTML-страницу при неудачном тесте.
Добавьте этот плагин в свой проект. Предполагая, что Cypress зависит от разработчиков
$ npm i -D циклоп# или, если вы предпочитаете пряжу$, добавьте -D циклоп
Включите плагин из файла поддержки или отдельного файла спецификации.
// в кипарисе/support/index.js// https://github.com/bahmutov/cyclopeimport 'циклоп'
// cypress.config.jsconst { defineConfig } = require('cypress')module.exports = defineConfig({ e2e: {setupNodeEvents(on, config) { // https://github.com/bahmutov/cyclope require('cyclope/plugin')(on, config) // ВАЖНО вернуть объект конфигурации // со всеми измененными переменные среды возвращают конфигурацию}, },})
Включите плагин из файла плагинов.
// кипарис/плагины/index.jsmodule.exports = (on, config) => { // https://github.com/bahmutov/cyclope require('циклоп/плагин')(on, config) // ВАЖНО вернуть объект конфигурации // с любыми измененными переменными среды вернуть конфигурацию}
Если вам нужно сохранить текущую страницу веб-приложения, включая любые ресурсы
// cypress/integration/spec.jsit('сохраняет страницу', () => { // обычные команды Cypress cy.contains('.some-selector', 'some text').should('be.visible')// когда приложение достигло желаемого состояния// сохраняем страницу в папке "page".savePage(' страница')})
Все локальные ресурсы, такие как изображения и CSS, следует сохранять как локальные файлы. Вы можете создать zip-архив
// используем расширение .zip, чтобы заархивировать папку в файл cy.savePage('page.zip')
При сохранении zip-архива функция возвращает объект со свойствами имени файла, ширины и высоты.
removeIframes
(по умолчанию false) удаляет все элементы <iframe>
со страницы перед сохранением.
cy.savePage('name', {removeIframes: true })
ignoreFailedAssets
(по умолчанию false) игнорирует сбой, если часть ресурсов не может быть загружена
cy.savePage('name', { ignoreFailedAssets: true })
Этот модуль включает в себя служебную функцию для сохранения страницы в случае неудачного теста. Вы можете использовать эту функцию как перехватчик afterEach
, возможно, из файла поддержки, поэтому она применяется ко всем тестам.
// в cypress/support/index.js// https://github.com/bahmutov/cyclopeimport { savePageIfTestFailed } from 'cyclope'afterEach(() => { сохранитьPageIfTestFailed() // на случай, если часть ресурсов вашего проекта сломана savePageIfTestFailed({ ignoreFailedAssets: true })})
По умолчанию страница сохраняется только в неинтерактивном режиме cypress run
. Если вы хотите сохранить страницу даже при запуске в cypress open
, используйте опцию saveInteractive
savePageIfTestFailed ({ saveInteractive: true })
Все страницы сохраняются в папке cypress/failed/<spec name>/<test name>
.
Совет: сохраните cypress/failed
как тестовый артефакт на CI. Если тест не пройден, скачайте и откройте folder/index.html
чтобы проверить структуру приложения на момент сбоя.
Псевдоним clope
Генерирует согласованное изображение PNG с использованием внешнего сервиса изображений Cyclope. При запуске Cypress требуются переменные среды CYCLOPE_SERVICE_URL
и CYCLOPE_SERVICE_KEY
. Поддерживает наведение
cy.get('#theme-switcher').realHover().cyclope('hover-over-sun.png')// сохраняет сгенерированное изображение "hover-over-sun.png" // эквивалентcy.get(' #theme-switcher').realHover()cy.clope()
Если вы хотите просто пропустить загрузку DOM и создание изображения, если сервис Cyclope не настроен, установите параметр среды Cypress, например, с помощью файла cypress.json
{ "env": {"циклоп": { "skipUploadWithoutUrl": true} } }
Вы можете включить подробные сообщения отладки в терминале с помощью модуля отладки, запустив тесты с переменной среды DEBUG=cyclope
$ DEBUG=cyclope npx cypress run
todo-app для циклопа
судоку-макет-модуль
Автор: Глеб Бахмутов <[email protected]> © 2021
@бахмутов
glebbahmutov.com
блог
видео
презентации
кипарис.советы
Лицензия: MIT — делайте с кодом что угодно, но не вините меня, если он не сработает.
Поддержка: если вы обнаружите какие-либо проблемы с этим модулем, отправьте электронное письмо/твит/откройте проблему на Github.
Copyright (c) 2021 Глеб Бахмутов <[email protected]>
Настоящим бесплатно любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на работу с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и настоящее уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.