Освоение Cypress: как отключить повторные попытки и оптимизировать набор тестов

Когда дело доходит до автоматического тестирования с помощью Cypress, повторные попытки могут оказаться палкой о двух концах. Хотя они могут помочь стабилизировать нестабильные тесты, они также могут привести к ненужным задержкам и продлить общее время выполнения теста. В этой статье мы рассмотрим различные способы отключения повторных попыток в Cypress и оптимизации набора тестов для получения более быстрых и надежных результатов.

Метод 1: глобальное отключение повторных попыток
Самый простой способ отключить повторные попытки в Cypress — настроить его глобально в файле конфигурации Cypress (cypress.json). Откройте файл и добавьте следующий код:

{
  "retries": 0
}

Установка для "retries"значения 0гарантирует, что Cypress не будет повторять неудачные тесты, что позволяет им немедленно завершиться неудачей без каких-либо дополнительных попыток.

Метод 2. Отключение повторов для определенных тестов
Если вы хотите отключить повторы только для определенных тестов, вы можете использовать команду .retry()в своем тестовом коде. Этот подход дает вам больше гибкости в выборе тестов, для которых повторные попытки должны быть отключены. Вот пример:

it("My test without retries", { retries: 0 }, () => {
  // Test code goes here
});

Передавая { retries: 0 }в качестве параметра теста, вы переопределяете глобальную конфигурацию повторов и отключаете повторы для этого конкретного теста.

Метод 3: отключение повторных попыток для перехватчиков и отдельных утверждений.
Cypress также позволяет отключать повторные попытки для перехватчиков (например, before, beforeEach, 11)., afterEach) и отдельные утверждения в тесте. Вот как этого можно добиться:

beforeEach(() => {
  // Hook code goes here
});
beforeEach({ retries: 0 }, () => {
  // Hook code without retries goes here
});
it("My test", () => {
  expect(5).to.equal(10); // Retry will be applied to this assertion by default
  cy.wrap(5).should("eq", 10, { retries: 0 }); // Disabling retries for a specific assertion
});

Метод 4: пользовательская логика повтора
В некоторых случаях вам может потребоваться реализовать собственную логику повтора вместо того, чтобы полагаться на встроенные механизмы Cypress. Это дает вам полный контроль над тем, когда и как должны происходить повторные попытки. Вот пример:

it("My custom retry logic", () => {
  let retries = 3;
  while (retries > 0) {
    try {
      // Test code goes here
      break; // Break the loop if the test passes
    } catch (error) {
      retries--;
    }
  }
  if (retries === 0) {
    throw new Error("Test failed after maximum retries");
  }
});

Отключение повторных попыток в Cypress может значительно ускорить работу вашего набора тестов и повысить его надежность. Независимо от того, решите ли вы отключить повторы глобально, для конкретных тестов, перехватчиков или отдельных утверждений, важно найти правильный баланс между стабильностью и производительностью. Поэкспериментируйте с этими методами и настройте набор тестов для достижения оптимальных результатов.

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