Cypress - Контроль, какие тесты для запуска - Использование Cypress для посева - PullRequest
0 голосов
/ 09 января 2020

В папке Integrations у меня в настоящее время есть 4 папки:

|- seeding [Folder1]
|  |- seeding1
|  |- seeding2
|  |- seeding3
|  |- ...
|
|- testing-feature-1 [Folder2]
|  |- test1
|  |- test2
|  |- test3
|  |- ...
|
|- testing-feature-2 [Folder3]
|  |- test4
|  |- test5
|  |- test6
|  |- ...
|
|- testing-feature-3 [Folder4]
|  |- test7
|  |- test8
|  |- test9
|  |- ...

В моей голове появятся другие папки 'testing-feature-x' 'со временем.


Я хотел бы иметь возможность контролировать, какие папки запускать. Прямо сейчас я могу запустить «Все тесты» или один. Я единственный, кому не хватает «Запустить спецификации в папке» ?! Или флажки, чтобы выбрать, какие тесты для запуска?

Вот пара сценариев ios, где это было бы полезно:

  • Функция 2 была переделана. Я хотел бы запустить все тесты в папке «testing-feature-2». Как этого добиться в настоящее время : Это можно сделать с помощью команды терминала: npx cypress run --spec 'cypress/integration/testing-feature-2/**/*' --browser canary --no-exit Это, очевидно, выполнимо, но все же ...
  • Функция 2 и 3 была переделана. Я хотел бы запустить все тесты в папках «testing-feature-2» и «testing-feature-3». Как этого добиться в настоящее время : Это можно сделать с помощью этих двух команд терминала: npx cypress run --spec 'cypress/integration/testing-feature-2/**/*' --browser canary --no-exit npx cypress run --spec 'cypress/integration/testing-feature-3/**/*' --browser canary --no-exit Чуть более раздражает. Но все еще выполнимо.
  • О запуске совершенно новой версии. Я хотел бы запустить все тесты, кроме папки 'seeding' (возможно, снова и снова, если что-то воспроизводится). Как этого добиться в настоящее время : Для этого мне нужно переместить 'seeding' папку из папки Integration (временно). И тогда я могу запустить все тесты. Но если какая-то функция активируется, я снова в терминале. Довольно раздражает. Много работы ног. Но все еще выполнимо.

Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 10 января 2020

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

В вашем пакете. json сделать что-то вроде этого:

"scripts": {
    "cypress:open": "cypress open",
    "cypress:open:feature-1": "cypress open --config integrationFolder=tests/cypress/integration/feature-1",
    "cypress:open:feature-2": "cypress open --config integrationFolder=tests/cypress/integration/feature-2"
}

npm run cypress:open будет запускать тесты в папке integration

npm run cypress:open-feature-1 будет запускать тесты в папке integration/feature-1

Вы можете поместить свои функции заполнения в cypress/support/index.js и добавьте их в глобальный объект, что-то вроде этого:

global.school = () => {
  faker.seed(123) // Seeding faker means you get the same details every time
  return {
    _id: faker.random.number(),
    name: `${faker.address.city()} School`,
    slug: faker.lorem.word(),
    email: 'demo@ccc.me',
    password: 'password'
  }
}

В вашем тестовом скрипте вы можете вызвать эту функцию с помощью строки, подобной этой:

const s = school() // Get a fresh object that looks like a school

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...