Отключение загрузки изображений в автоматизации тестирования может принести многочисленные преимущества, включая более быстрое выполнение тестов, повышенную стабильность, снижение нестабильности и сокращение использования сети.

Это может сэкономить время, пропуская длительный процесс загрузки и рендеринга изображений, что приводит к более быстрому выполнению теста. Это особенно полезно для больших наборов тестов или при выполнении тестов в среде 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), отключая загрузку изображений (путем изменения аргумента) для потенциального повышения производительности во время тестирования. Это

  1. on('before:browser:launch', ...) регистрирует функцию обратного вызова, которая будет выполняться перед запуском браузера.
  2. В функцию обратного вызова передаются 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, за создание подробного видео по теме и за ваши рекомендации.

Аншита Бхасин
Старший инженер по автоматизации

Гитхаб | ЛинкедИн | Твиттер | "YouTube"