Feature config override (specifically 'restart') causes process to hang after suite
@DenysKuchma 已经在做这个了。
开始于 2026年1月8日。
评估
这个 Issue 还没有评估数据。
描述
Description
We have a codebase where for all of the tests, we have restart set as false inside of codecept.conf.js. However we have 1 Feature where we would like to have restart set to session/keep. The problem is that when overriding config on the feature with
Feature('blabla').config({ restart: 'session' })
we run into the problem that suite hangs up after it completes, leaving browser open and just never finishing. This causes it to label it as failed due to timeout on our CI pipeline.
This problem does not occur if restart: 'session' is set in codecept.conf.js. Setting config on each Scenario also doesn't work, because config gets reverted between them, which causes the browser to close after first Scenario and not reopening for the second one.
How it should work
After the suite completes, codecept process shuts down as expected.
Example
codecept.conf.js:
const { setHeadlessWhen, setCommonPlugins } = require('@codeceptjs/configure')
// turn on headless mode when running with HEADLESS=true environment variable
// export HEADLESS=true && npx codeceptjs run
setHeadlessWhen(process.env.HEADLESS)
// enable all common plugins https://github.com/codeceptjs/configure#setcommonplugins
setCommonPlugins()
/** @type {CodeceptJS.MainConfig} */
exports.config = {
tests: './*_test.js',
output: './output',
helpers: {
Playwright: {
browser: 'chromium',
url: 'http://google.com',
show: true,
keepBrowserState: false, // No influence when restart: true
keepCookies: false, // No influence when restart: true
restart: true
},
FileSystem: {}
},
name: 'ccjs'
}
Suite:
Feature('Config hangs').config({
restart: 'session'
})
Scenario('do something 1', ({ I }) => {
I.amOnPage('https://codecept.io/quickstart/')
})
Scenario('do something 2', ({ I }) => {
I.waitForText('Quickstart')
})
Scenario('do something 3', ({ I }) => {
I.see('If you prefer not to use Playwright')
})
Output:
~hxllv~ ~/ccjs npx codeceptjs run featureConfigHang.js --verbose
***************************************
nodeInfo: 23.6.0
osInfo: macOS 15.7.1
cpuInfo: (16) arm64 Apple M3 Max
chromeInfo: 142.0.7444.162
edgeInfo: Not Found
firefoxInfo: undefined
safariInfo: 26.0.1
If you need more detailed info, just run this: npx codeceptjs info
***************************************
CodeceptJS v3.6.7 #StandWithUkraine
Using test root "/Users/xx/ccjs"
Helpers: Playwright, FileSystem
Plugins: screenshotOnFail, tryTo, retryFailedStep, retryTo, eachElement
Config hangs --
[1] Starting recording promises
› [Suite Config] Playwright {"restart":"session"}
Timeouts:
› [Session] Starting singleton browser session
do something 1
› [Dir] /Users/xx/ccjs
I am on page "https://codecept.io/quickstart/"
✔ OK in 1827ms
› [Session] cleaning cookies and localStorage
do something 2
› [Dir] /Users/xx/ccjs
I wait for text "Quickstart"
✔ OK in 5ms
› [Session] cleaning cookies and localStorage
do something 3
› [Dir] /Users/xx/ccjs
I see "If you prefer not to use Playwright"
✔ OK in 15ms
› [Session] cleaning cookies and localStorage
› [Suite Config] Reverted for Playwright
OK | 3 passed // 3s <- hangs here
Expected output:
~hxllv~ ~/ccjs npx codeceptjs run featureConfigHang.js --verbose
***************************************
nodeInfo: 23.6.0
osInfo: macOS 15.7.1
cpuInfo: (16) arm64 Apple M3 Max
chromeInfo: 142.0.7444.162
edgeInfo: Not Found
firefoxInfo: undefined
safariInfo: 26.0.1
If you need more detailed info, just run this: npx codeceptjs info
***************************************
CodeceptJS v3.6.7 #StandWithUkraine
Using test root "/Users/xx/ccjs"
Helpers: Playwright, FileSystem
Plugins: screenshotOnFail, tryTo, retryFailedStep, retryTo, eachElement
Config hangs --
[1] Starting recording promises
Timeouts:
› [Session] Starting singleton browser session
do something 1
› [Dir] /Users/xx/ccjs
I am on page "https://codecept.io/quickstart/"
✔ OK in 1648ms
› [Session] cleaning cookies and localStorage
do something 2
› [Dir] /Users/xx/ccjs
I wait for text "Quickstart"
✔ OK in 8ms
› [Session] cleaning cookies and localStorage
do something 3
› [Dir] /Users/xx/ccjs
I see "If you prefer not to use Playwright"
✔ OK in 3ms
› [Session] cleaning cookies and localStorage
OK | 3 passed // 2s
~hxllv~ ~/ccjs <- back in control of terminal
- 主要语言
- JavaScript
- 星标
- 4.2k
- 派生
- 756
- 平均合并
- 2 天 9 小时
- 30 天内合并 PR
- 16
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
codeceptjs/CodeceptJS 的其他 Issue
-
stale
难度 2/5 1-3 小时 新手友好度 72/100
codeceptjs/CodeceptJS#5420 · 1 条评论 ·
-
stale
难度 2/5 1-3 小时 新手友好度 76/100
codeceptjs/CodeceptJS#5358 · 1 条评论 ·
-
stale
难度 2/5 1-3 小时 新手友好度 78/100
codeceptjs/CodeceptJS#4958 · 10 条评论 · 2 个 reaction ·
-
stale
难度 1/5 1 小时以内 新手友好度 72/100
codeceptjs/CodeceptJS#4778 · 3 条评论 ·
-
stale
难度 4/5 3-5 天 新手友好度 38/100
codeceptjs/CodeceptJS#5618 · 1 条评论 ·
查看 codeceptjs/CodeceptJS 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
palladius/rails8-app-on-gcp#145 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
dotenvx/dotenv-vscode#139 ·
-
test-change-proposal
难度 2/5 1-3 小时 新手友好度 65/100
web-platform-tests/interop#1455 ·
-
难度 2/5 1-3 小时 新手友好度 75/100
corsairdev/corsair#1764 ·
-
难度 2/5 1-3 小时 新手友好度 75/100