Отключение загрузки изображений в автоматизации тестирования может принести многочисленные преимущества, включая более быстрое выполнение тестов, повышенную стабильность, снижение нестабильности и сокращение использования сети.
Это может сэкономить время, пропуская длительный процесс загрузки и рендеринга изображений, что приводит к более быстрому выполнению теста. Это особенно полезно для больших наборов тестов или при выполнении тестов в среде CI/CD, где скорость имеет решающее значение.
Отключив загрузку изображений, вы также можете устранить потенциальный источник нестабильности в тестах. Иногда изображения не загружаются из-за проблем с сетью или других факторов, что может привести к неожиданным сбоям теста. Отключив загрузку изображений, вы можете повысить надежность ваших автоматических тестов.
Помимо вышеперечисленных факторов, отключение загрузки изображений также может повысить стабильность и согласованность ваших тестов за счет уменьшения проблем с сетью, которые могут привести к сбою тестов или получению неожиданных результатов.
Один из способов отключить загрузку изображений для браузеров на основе Chromium — добавить флаг imagesEnabled=false
.
В Cypress это можно сделать, добавив следующую конфигурацию в Cypress.config.js (Cypress версии 10 и выше):
const { defineConfig } = require("cypress"); module.exports = defineConfig({ e2e: { setupNodeEvents(on) { on('before:browser:launch', (browser = {}, launchOptions) => { if (browser.family === 'chromium' && browser.name !== 'electron') { launchOptions.args.push('--blink-settings=imagesEnabled=false') return launchOptions } }) }, }, });
Прохождение кода:
Приведенный выше код изменяет параметры запуска браузеров на основе Chromium (за исключением Electron), отключая загрузку изображений (путем изменения аргумента) для потенциального повышения производительности во время тестирования. Это
on('before:browser:launch', ...)
регистрирует функцию обратного вызова, которая будет выполняться перед запуском браузера.- В функцию обратного вызова передаются 2 параметра:
browser
=›Содержит информацию о запущенном браузере (например, family
, name
, version
)
launchOptions
=› Это объект, содержащий различные параметры, которые можно передать браузеру при его запуске.
3. Оператор if
проверяет, является ли запускаемый браузер браузером на основе Chromium (т.е. browser.family === 'chromium'
) и не является ли он браузером Electron (т.е. browser.name !== 'electron'
). Если выполняются оба условия, выполняется код внутри блока if
.
4. launchOptions.args.push('--blink-settings=imagesEnabled=false')
добавляет аргумент командной строки --blink-settings=imagesEnabled=false
в массив args
launchOptions
. Этот аргумент отключает загрузку изображений в браузере.
5. Из функции обратного вызова возвращается измененный объект launchOptions
. Это говорит Cypress использовать измененные параметры при запуске браузера.
Давайте напишем тестовый пример и проверим выполнение:
describe("Block Image loading in Cypress", () => { it("Open Amazon and disable image load", () => { cy.visit("https://www.amazon.com"); }); })
Запустите Cypress, выполнив команду: npx cypress open и выберите браузер Chrome.
Вы заметите, что изображения на веб-сайте не будут загружаться из-за изменения конфигурации, которое мы сделали на предыдущих шагах.
Таким образом, вы можете заблокировать загрузку изображений в Cypress для браузеров на основе Chromium.
Вывод:
В этом блоге мы узнали, как отключить загрузку изображений в Cypress для браузеров на основе Chromium. Отключение загрузки изображений в Cypress позволяет значительно повысить производительность теста за счет уменьшения объема данных, которые необходимо передать во время выполнения теста. Это может быть особенно полезно в сценариях, где изображения не имеют решающего значения для тестируемой функциональности.
Спасибо за прочтение. Счастливого обучения! — АБ
Ссылка: Naveen AutomationLabs (https://youtu.be/TO7i6xlMBHU)
Спасибо, Naveen AutomationLabs, за создание подробного видео по теме и за ваши рекомендации.
Аншита Бхасин
Старший инженер по автоматизации