Как выполнить несколько тестов в Cypress, не закрывая браузер?

#javascript #cypress

Вопрос:

У меня есть 3 файла спецификаций для заполнения формы тестирования и загрузки фотографий с помощью cypress.

  1. файл спецификации: Заполните форму
  2. файл спецификации: Загрузите фотографию
  3. файл спецификаций: Проверьте результаты

Форма — это … https://demoqa.com/automation-practice-form

Проблема в том, что когда тест заполнения формы проходит, браузер закрыт, а 2 других теста завершаются неудачей, потому что я не вызываю открытый URL-адрес в каждом тестовом случае.

Если я запускаю тесты в графическом интерфейсе, все в порядке. Браузер не закрывается после первого теста, но когда я запускаю

npx cypress run --headed --browser chrome

из командной строки возникает проблема.

Я хочу запускать тесты из командной строки, чтобы браузер не закрывался, пока все тесты не будут завершены.

Комментарии:

1. Пожалуйста, добавьте код из ваших файлов спецификаций в вопрос.

2. Код не имеет значения. Когда я запускаю тесты с графическим интерфейсом cypress, тесты выполняются один за другим, и браузер не закрывается.

3. Я размещаю заказ тестовых случаев в "testFiles": [ "Form.spec.js", "UploadFile.spec.js", "Check.spec.js" ] спецификации формы cypress.json, заполняю форму пользовательскими данными, загружаю спецификацию файла, загружаю файл в ту же форму и нажимаю «Отправить», а проверка спецификации проверяет, загружен ли файл после шага тестового случая перед отправкой заполненной формы. Проблема в том, что я запускаю все из командной строки. После завершения первого тестового случая браузер закрывается, а второй тестовый случай запускается без браузера, и тестовый случай завершается неудачно.

4. Вы пробовали вариант-без выхода

5. Да, и после первого теста браузер остается открытым, но второй тестовый пример не запускается.

Ответ №1:

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

Создайте 4-й файл спецификации, назовите его main.spec.ts, внутри этого файла выполните импорт для 3 файлов спецификаций, которые у вас есть:

 import './fillform.spec.js'
import './uploadphoto.spec.js'
import './result.spec.js'
 

В файле cypress.json добавьте следующую запись, чтобы разрешить запуск только основного файла спецификации:

 "testFiles": ["main.spec.js"],
 

Теперь cypress run будет работать точно так же, как cypress open, и все спецификации будут запускаться без закрытия браузера в промежутке:

 npx cypress run --headed --browser chrome