Skip to content

Commit 535599c

Browse files
Copilotkobenguyent
andcommitted
Improve TestCafe form submission timeout with efficient polling mechanism
Co-authored-by: kobenguyent <[email protected]>
1 parent 518db1e commit 535599c

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

lib/utils.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const getFunctionArguments = require('fn-args')
66
const deepClone = require('lodash.clonedeep')
77
const { convertColorToRGBA, isColorProperty } = require('./colorUtils')
88
const Fuse = require('fuse.js')
9+
const { spawnSync } = require('child_process')
910

1011
function deepMerge(target, source) {
1112
const merge = require('lodash.merge')
@@ -192,19 +193,20 @@ module.exports.test = {
192193
return function (key) {
193194
if (!fs.existsSync(dataFile)) {
194195
// Increase wait time for CI environments where form submission may be slower
195-
const waitTime = process.env.CI ? 15 * 1000 : 1 * 1000 // 15 seconds in CI, 1 second otherwise
196-
const pollInterval = 100 // Check every 100ms
196+
const waitTime = process.env.CI ? 30 * 1000 : 1 * 1000 // 30 seconds in CI, 1 second otherwise
197+
const pollInterval = 200 // Check every 200ms
197198
const startTime = new Date().getTime()
198199

199-
// Poll for file existence instead of busy waiting
200+
// Poll for file existence using proper sleep mechanism
200201
while (new Date().getTime() - startTime < waitTime) {
201202
if (fs.existsSync(dataFile)) {
202203
break
203204
}
204-
// Sleep for pollInterval milliseconds
205-
const start = new Date().getTime()
206-
while (new Date().getTime() - start < pollInterval) {
207-
// Small busy wait for polling interval
205+
// Use spawnSync to create a proper non-CPU-intensive delay
206+
if (os.platform() === 'win32') {
207+
spawnSync('ping', ['-n', '1', '-w', pollInterval.toString(), '127.0.0.1'], { stdio: 'ignore' })
208+
} else {
209+
spawnSync('sleep', [(pollInterval / 1000).toString()], { stdio: 'ignore' })
208210
}
209211
}
210212
}

0 commit comments

Comments
 (0)