CodeceptJS
CodeceptJS copied to clipboard
Bug: using a "dynamic" restart=false with webdriverio backend leaves browser instances running
What are you trying to achieve?
I'm trying to configure a single feature to keep the browser open between tests. Configuring globally is not an option because our tests are not ready to handle that yet. I want to have some tests run with browser restart: true, and others with restart: false.
I'm running the following command:
codeceptjs run path-to-my-test
I expect the browser to close after tests are executed.
(All tests pass btw.)
What do you get instead?
Browser remains open after all tests finish.
› [Suite Config] WebDriver {"restart":false}
› Started SeleniumStandaloneLauncher
› [Session] Starting singleton browser session
› [Window Size] [object Object]
# ...
# irrelevant tests output
# ....
Emitted | test.after ([object Object])
› [Session] cleaning cookies and localStorage
Emitted | suite.after ([object Object])
› [Suite Config] Reverted for WebDriver
OK | 7 passed // 23s
Emitted | global.result ([object Object])
Emitted | global.after ([object Object])
› Stopped SeleniumStandaloneLauncher
Provide test source code if related
Feature('Feature').config('WebDriver', {
restart: false,
});
Details
- CodeceptJS version: ^2.3.2
- NodeJS Version: v10.15.3
- Operating System: Ubuntu 19.04
- Protractor || WebDriverIO || Nightmare version (if related):
"@wdio/selenium-standalone-service": "^5.15.0",
- Configuration file:
helpers: {
GraphQL: {
endpoint: 'http://localhost:4060/graphql',
},
WebDriver: {
url: 'http://localhost:4050/',
browser: 'chrome',
windowSize: 'maximize',
version: chromeVersion,
desiredCapabilities: {
chromeOptions: {
binary: process.env.CI ? void 0 : chromiumBinary.path,
args: ['--disable-gpu'],
},
},
smartWait: 5000,
},
},
Related but not the same: https://github.com/Codeception/CodeceptJS/issues/1069
Howdy, any plans to fix this anytime soon? Is there anything I could do to help moving that forward?
@chris-miaskowski make a PR would be a faster way 🎉
I see the same behavior using Puppeteer helper, please see:
Scenario Steps:
- I.waitForText("fail me here", 10) at Test.<anonymous> (tests/TestName_test.js:46:11)
Run with --verbose flag to see NodeJS stacktrace
FAIL | 1 passed, 2 failed // 52s
and browser is still opened.
I am using: Feature('BlaBla @blabla').config({restart: false, keepCookies: true});
@DavertMik is there any chance to fix that issue?
Thanks! 🙂
@chris-miaskowski make a PR would be a faster way
I have this in the back of my head. Once I finally get a chance to look into it would be helpful to get some directions. Does anyone know what should I be looking at in the code? More or less.
@chris-miaskowski I quickly go thru code (I am not familiar with how it is implemented atm, I think @DavertMik can help us here) and I found latest fix around it here: https://github.com/Codeception/CodeceptJS/pull/1136 - maybe it will be helpful for you where you can dig.
The same is happening whenever I use Feature('My test suite').config({ restart: false })
; Tests runs perfectly, keeping the browser state between scenarios, as intended, but then it get's stuck with browser open after last test passes, breaking my CI/CD pipeline.
Using Puppeteer. I'm looking for a command to close the browser manually meanwhile. Is there any?