Как мне остановить cucumberjs после завершения сценария? - PullRequest
0 голосов
/ 21 мая 2019

После успешного завершения сценариев cucumberjs зависает - на неопределенный срок. Как я могу остановить это?

У меня есть cucumberjs, работающий на npm / nodejs.

package.json:

{
  "name": "foo-test-automation",
  "version": "1.1.0",
  "description": "Integration Regression UI Test Automation for Foo application",
  "main": "fooAutoTest.js",
  "scripts": {
    "start": ". .env; node ./node_modules/.bin/cucumber-js --tags @RegressionTestSuite --format json:./results/log_`date +\\\"%Y\\\\%m\\\\%d_%H%M\\\"`.json",
},

После финиша кажется, что на заднем плане работает cumber

$ npm run new
............................

5 scenarios (5 passed)
28 steps (28 passed)
0m37.701s

Я искал процессы зависания:

Hucks-MacBook-Pro:~ huckcarignan$ ps aux | grep node
huckcarignan     25252   0.0  0.0  4287512    856 s004  S+   12:30PM   0:00.00 grep node
huckcarignan     18365   0.0  0.2  4652124  40804 s000  S+   11:33AM   0:02.64 node ./node_modules/.bin/cucumber-js --tags @New --format json:./results/log_"20190521_1133".json
huckcarignan     18362   0.0  0.0  4280924    868 s000  S+   11:33AM   0:00.01 sh -c . .env; node ./node_modules/.bin/cucumber-js --tags @New --format json:./results/log_`date +\"%Y\\%m\\%d_%H%M\"`.json

так что ничего не выпрыгивает на меня.

Я что-то упустил в моих крючках?

 const { BeforeAll, AfterAll } = require('cucumber');
 const puppeteer = require('puppeteer');
 const timestamp = require('time-stamp');
 require('dotenv').config();

 BeforeAll(async function() {
     this.browser = await puppeteer.launch({
         headless: (process.env.HEADLESS === 'true'),
         slowMo: parseInt(process.env.SLOWMO),
         defaultViewport: {
             width: parseInt(process.env.SCREEN_SIZE_WIDTH),
             height: parseInt(process.env.SCREEN_SIZE_HEIGHT)
         }
     });
     this.page = await this.browser.newPage();
 });

 AfterAll(async function() {
     // Teardown browser
     if (this.browser) {
         await this.browser.close();
     }
 });

Буду признателен за любую помощь.

ОБНОВЛЕНИЕ 1 Я попытался заменить мой AfterAll на: // Асинхронное обещание AfterAll (function () { return Promise.resolve (); });

но все равно зависает (но с открытым браузером)

1 Ответ

0 голосов
/ 15 июня 2019

Используя эту страницу - https://www.npmjs.com/package/selenium-webdriver, вы можете создать отдельный класс с именем driver-factory.js и создать веб-драйвер с возможностями, которые вам когда-либо понадобятся.

Вызовите этот классот хуков и используйте его в аннотации AfterAll.Если драйвер уже существует, попробуйте выйти из него ..

...