Skip to content

Commit 559310b

Browse files
DavertMikclaude
andcommitted
fix(analyze,screencast): rework for new autoExit + fix unit tests
analyze.js: CODECEPT_DISABLE_AUTO_EXIT was removed in #5556 (autoExit refactor). Push printReport onto the recorder so it's awaited inside codecept.run()'s done() before autoExit fires. screencast tests: emit event.test.started in unit tests to match the production event sequence (asyncWrapper.js fires it between event.test.before and the first event.step.started). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 655e6af commit 559310b

2 files changed

Lines changed: 13 additions & 14 deletions

File tree

lib/plugin/analyze.js

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const ai = aiModule.default || aiModule
1212
import colors from 'chalk'
1313
import ora from 'ora'
1414
import event from '../event.js'
15+
import recorder from '../recorder.js'
1516

1617
import output from '../output.js'
1718

@@ -227,19 +228,14 @@ export default function (config = {}) {
227228
console.log('Enabled AI analysis')
228229
})
229230

230-
event.dispatcher.on(event.all.result, async result => {
231+
event.dispatcher.on(event.all.result, result => {
231232
if (!isMainThread) return // run only on main thread
232233
if (!ai.isEnabled) {
233234
console.log('AI is disabled, no analysis will be performed. Run tests with --ai flag to enable it.')
234235
return
235236
}
236237

237-
process.env.CODECEPT_DISABLE_AUTO_EXIT = '1'
238-
try {
239-
await printReport(result)
240-
} finally {
241-
process.exit(process.exitCode || 0)
242-
}
238+
recorder.add('analyze:print-ai-report', () => printReport(result), true)
243239
})
244240

245241
event.dispatcher.on(event.workers.result, async result => {
@@ -253,12 +249,7 @@ export default function (config = {}) {
253249
return
254250
}
255251

256-
process.env.CODECEPT_DISABLE_AUTO_EXIT = '1'
257-
try {
258-
await printReport(result)
259-
} finally {
260-
process.exit(process.exitCode || 0)
261-
}
252+
await printReport(result)
262253
})
263254

264255
async function printReport(result) {

test/unit/plugin/screencast_test.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function fakeHelper(screencastApi) {
3434

3535
function detachAll() {
3636
for (const evt of [
37-
event.test.before, event.test.after, event.test.failed,
37+
event.test.before, event.test.started, event.test.after, event.test.failed,
3838
event.step.started, event.step.finished,
3939
]) {
4040
event.dispatcher.removeAllListeners(evt)
@@ -73,6 +73,7 @@ describe('screencast', () => {
7373
const test = createTest('keep-on-pass')
7474

7575
event.dispatcher.emit(event.test.before, test)
76+
event.dispatcher.emit(event.test.started, test)
7677
event.dispatcher.emit(event.step.started, aStep())
7778
await recorder.promise()
7879

@@ -93,6 +94,7 @@ describe('screencast', () => {
9394
const test = createTest('delete-on-pass')
9495

9596
event.dispatcher.emit(event.test.before, test)
97+
event.dispatcher.emit(event.test.started, test)
9698
event.dispatcher.emit(event.step.started, aStep())
9799
await recorder.promise()
98100

@@ -114,6 +116,7 @@ describe('screencast', () => {
114116
const test = createTest('keep-on-fail')
115117

116118
event.dispatcher.emit(event.test.before, test)
119+
event.dispatcher.emit(event.test.started, test)
117120
event.dispatcher.emit(event.step.started, aStep())
118121
await recorder.promise()
119122

@@ -132,6 +135,7 @@ describe('screencast', () => {
132135
screencast({ on: 'test', captions: true })
133136
let test = createTest('with-captions')
134137
event.dispatcher.emit(event.test.before, test)
138+
event.dispatcher.emit(event.test.started, test)
135139
event.dispatcher.emit(event.step.started, aStep())
136140
await recorder.promise()
137141
event.dispatcher.emit(event.test.after, test)
@@ -144,6 +148,7 @@ describe('screencast', () => {
144148
screencast({ on: 'test', captions: false })
145149
test = createTest('no-captions')
146150
event.dispatcher.emit(event.test.before, test)
151+
event.dispatcher.emit(event.test.started, test)
147152
event.dispatcher.emit(event.step.started, aStep())
148153
await recorder.promise()
149154
event.dispatcher.emit(event.test.after, test)
@@ -159,6 +164,7 @@ describe('screencast', () => {
159164
const test = createTest('with-srt')
160165

161166
event.dispatcher.emit(event.test.before, test)
167+
event.dispatcher.emit(event.test.started, test)
162168
await recorder.promise()
163169

164170
const step = { name: 'click', actor: 'I', args: ['Continue'] }
@@ -183,6 +189,7 @@ describe('screencast', () => {
183189
test.artifacts.video = '/tmp/some-video-dir/myrun.webm'
184190

185191
event.dispatcher.emit(event.test.before, test)
192+
event.dispatcher.emit(event.test.started, test)
186193
const step = { name: 'see', actor: 'I', args: ['Github'] }
187194
event.dispatcher.emit(event.step.started, step)
188195
event.dispatcher.emit(event.step.finished, step)
@@ -202,6 +209,7 @@ describe('screencast', () => {
202209
const test = createTest('no-api')
203210

204211
event.dispatcher.emit(event.test.before, test)
212+
event.dispatcher.emit(event.test.started, test)
205213
await recorder.promise()
206214
event.dispatcher.emit(event.test.after, test)
207215
await recorder.promise()

0 commit comments

Comments
 (0)