API скриншотов после захвата
После захвата скриншота вы можете получить подробную информацию о нём через событие плагина after:screenshot. Это событие срабатывает при захвате скриншота с помощью cy.screenshot() или в результате ошибки теста. Событие срабатывает после того, как изображение скриншота запишется на диск.
Это позволяет вам записывать эту информацию, изменять изображение по мере необходимости и возвращать обновлённые данные об изображении.
Синтаксис
⚠️ Этот код является частью файла файла плагинов и, следовательно, выполняется в среде Node.js. В этом файле нельзя вызывать команды
Cypressилиcy, но у вас есть прямой доступ к файловой системе и остальной операционной системе.
on('after:screenshot', (details) => {
/* ... */
})
details (объект)
Объект, описывающий захваченный скриншот, с такими свойствами:
| Свойство | Тип | Описание |
|---|---|---|
size |
number |
Размер файла изображения (в байтах). |
takenAt |
string |
Дата и время захвата скриншота. Формат ISO 8601 в UTC (пример: '2020-03-09T07:30:37.686Z') |
duration |
number |
Время захвата и сохранения скриншота (в миллисекундах). |
dimensions |
object |
Ширина и высота изображения в пикселях (пример: { width: 100, height: 50 }) |
multipart |
boolean |
Было ли изображение скриншота склеено из нескольких изображений скриншотов. |
pixelRatio |
number |
(Необязательно) Соотношение пикселей скриншота к пикселям, отображаемым в браузере. |
name |
string |
(Необязательно) Аргумент fileName , переданный через cy.screenshot()
|
specName |
string |
Имя файла спецификации, в котором был захвачен скриншот. |
path |
string |
Абсолютный путь к изображению. |
scaled |
boolean |
Было ли приложение, подвергаемое тестированию, масштабировано для вписывания в область просмотра браузера. Может быть аргументом scale , переданным через cy.screenshot()
|
blackout |
array |
Аргумент blackout , переданный через cy.screenshot()
|
Использование
Изменение данных скриншота
Используя свой файл плагинов, вы можете обработать событие after:screenshot.
Если вы измените path, size или dimensions изображения, вам необходимо обновить новые значения, чтобы данные корректно отображались в результатах тестирования. Любые другие свойства помимо path, size и dimensions будут игнорироваться.
Вы можете вернуть объект или промис, который разрешается в объект из функции обратного вызова. Любой тип возвращаемого значения, кроме объекта, будет проигнорирован. Объект может содержать следующие свойства:
- path: Абсолютный путь к текущему расположению изображения
- size: Размер текущего файла изображения (в байтах)
-
dimensions: Ширина и высота текущего изображения в пикселях (как объект с формой
{ width: 100, height: 50 })
Свойства будут объединены с данными скриншота и переданы в обратный вызов onAfterScreenshot (если он определён с помощью Cypress.Screenshot.defaults() и/или cy.screenshot()).
Изменение пути скриншота
Если вы перемещаете расположение изображения скриншота, вам необходимо указать новый path изображения.
// cypress/plugins/index.js
const fs = require('fs')
module.exports = (on, config) => {
on('after:screenshot', (details) => {
console.log(details) // print all details to terminal
const newPath = '/new/path/to/screenshot.png'
return new Promise((resolve, reject) => {
// fs.rename moves the file to the existing directory 'new/path/to'
// and renames the image to 'screenshot.png'
fs.rename(details.path, newPath, (err) => {
if (err) return reject(err)
// because we renamed and moved the image, resolve with the new path
// so it is accurate in the test results
resolve({ path: newPath })
})
})
})
}
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/plugins/after-screenshot-api