WebdriverIO + Jasmine: как исключить конкретный тестовый файл при запуске пакета на основе этого имени тестового файла

На данный момент мы используем последнюю версию 8.X WebdriverIO и последнюю версию Jasmine 4.X, используя последнюю версию Node 18.X.

В моем файле Wdio.conf.js у меня есть набор:

all: [ 'path/test1.js', 'path/test2.js'],

У test1.js есть Describe со значением «SMOKE test 1», а у test2.js — «test 2».

Я хочу запустить --suite=all, но исключить все файлы, которые НЕ содержат "SMOKE" в заголовке, или запустить --suite=all, но включить только те тесты, которые содержат "SMOKE" в заголовке. Возможно ли это и как? У меня реальные проблемы с поиском примеров для этого случая. Можем ли мы как-то использовать grep для этого примера? Я понятия не имею, как мы можем это сделать.

По сути, идея состоит в том, чтобы запускать только дымовые тесты из какого-то пакета. Мы не используем раннеры Mocha и Cucumber с дополнительными тегами, поэтому мы в основном постоянно запускаем наборы. Я не хочу создавать дополнительные наборы и делить тесты на отдельные наборы, у нас много тестовых файлов.

Я пытался следовать документации, но у меня возникли проблемы с их примером: grep -r -l --include "*.js" "myText" | wdio wdio.conf.js

1 ответ

с WebdriverIO 7.21 и Jasmine 3.7 следующее работает стабильно, надеюсь, это не изменилось в Wdio 8 или Jasmine 4. По крайней мере,jasmineOpts(вместо старыхjasmineNodeOpts) отлично работает в wdio 7, но правильно упоминается в документации wdio 8.

Рабочий скрипт package.json использует grep Jasmine :

      "smoketest": "wdio run wdio.local.conf.js --suite=temp --jasmineOpts.grep=_smoke"

где:

--suite=tempопределен в наборах wdio.local.conf.js и запускает только те файлы спецификаций,

--jasmineOpts.grep=_smokeнаходит в тесте часть '_smoke' (it) названия Иdescribetitle внутри указанных выше файлов спецификаций и запускает только их.

Это приведет к полному описанию

      describe(`Suite 1 _smoke any other text`, () => {
   it('Test 1-1', async () => {});
   it('Test 1-2', async () => {});
});

и тесты из других описаний, например:

      it('Test 2-1 _smoke is for smoke runs', async () => {});

Несовпадающие тесты (его) пропускаются.

_smokeэто может быть любой другой текстовый тег, который вы добавляете к заголовкам.


Дополнительная информация:

  1. Конечно, вы не забудьте добавить дополнительный--для запуска npm-скрипта с дополнительными опциями :)(раньше забывал)))

скрипт package.json:

      "localtest": "wdio run wdio.local.conf.js --suite=temp"

командная строка:

      $ npm run localtest -- --jasmineOpts.grep=_smoke
> wdio run wdio.local.conf.js --suite=temp --jasmineOpts.grep=_smoke

--spec=_smokeнайдет и запустит имена файлов , содержащие «_smoke» (например,test1_smoke.js), а не Описать имена, но может быть полезно. .

Обратите внимание, что «Когда--specпредоставлена ​​опция, она Документы Wdio здесьпереопределит любые шаблоны, определенные параметром спецификации конфигурации или уровня возможностей", поэтому--suite=temp --spec=_smokeзапустит все файлы из набора конфигурации с именемtemp И все файлы с совпадающим именем.


я не мог сделать--grep=_smokeработает, запускает все сьюты и тесты. Кажется, это не имеет никакого эффекта для Wdio Runner + Jasmine.

Также не удалось использовать несколько тегов , таких как--jasmineOpts.grep='@describe_tag||@test_tag',--jasmineOpts.grep='@describe_tag|@test_tag',--jasmineOpts.grep='@describe_tag&&@test_tag'. Возможно, кому-то повезет больше.

Надеюсь, это кому-то поможет :)

Другие вопросы по тегам