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
) названия Иdescribe
title внутри указанных выше файлов спецификаций и запускает только их.
Это приведет к полному описанию
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
это может быть любой другой текстовый тег, который вы добавляете к заголовкам.
Дополнительная информация:
- Конечно, вы не забудьте добавить дополнительный
--
для запуска 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'
. Возможно, кому-то повезет больше.
Надеюсь, это кому-то поможет :)