Skip to content

Commit 7ff7ca7

Browse files
author
DavertMik
committed
fixed runner tests
1 parent 57bb1dd commit 7ff7ca7

File tree

4 files changed

+35
-28
lines changed

4 files changed

+35
-28
lines changed

lib/mocha/asyncWrapper.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export function test(test) {
8686
const result = testFn.call(test, args)
8787

8888
// Wait for all recorder steps to complete
89-
if (isAsyncFunction(testFn) && result.then) {
89+
if (result && result.then) {
9090
return result.then(() => recorder.promise())
9191
}
9292
return recorder.promise()
@@ -148,7 +148,8 @@ export function injected(fn, suite, hookName) {
148148
async (retry, number) => {
149149
try {
150150
recorder.startUnlessRunning()
151-
await fn.call(this, { ...getInjectedArguments(fn), suite, test: currentTest })
151+
const injectedArgs = await getInjectedArguments(fn)
152+
await fn.call(this, { ...injectedArgs, suite, test: currentTest })
152153
await recorder.promise().catch(err => retry(err))
153154
} catch (err) {
154155
retry(err)

lib/session.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ function session(sessionName, config, fn) {
5151
delete savedSessions[sessionName]
5252
}
5353

54-
event.dispatcher.once(event.test.after, () => {
54+
event.dispatcher.once(event.test.finished, () => {
5555
recorder.add('close session browsers', closeBrowsers)
5656
})
5757

@@ -77,10 +77,12 @@ function session(sessionName, config, fn) {
7777
'register session wrapper',
7878
async () => {
7979
const session = savedSessions[sessionName]
80+
if (!session) {
81+
throw new Error(`Session "${sessionName}" not found. It may have been closed already.`)
82+
}
8083
recorder.session.start(`session:${sessionName}`)
8184
event.dispatcher.on(event.step.after, addContextToStep)
8285
recorder.add('switch to browser', () => {
83-
const session = savedSessions[sessionName]
8486
return session.loadVars(session.vars)
8587
})
8688

test/acceptance/session_test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ Scenario('Different cookies for different sessions @Playwright @Puppeteer', asyn
6363

6464
cookies.default = (await I.grabCookie(cookieName))?.value
6565
I.say(`${cookieName}: ${cookies.default}`)
66-
session('john', async () => {
66+
await session('john', async () => {
6767
const cookie = await I.grabCookie(cookieName)
6868
cookies.john = cookie?.value
6969
I.say(`${cookieName}: ${cookies.john}`)
7070
})
71-
session('mary', async () => {
71+
await session('mary', async () => {
7272
const cookie = await I.grabCookie(cookieName)
7373
cookies.mary = cookie?.value
7474
I.say(`${cookieName}: ${cookies.mary}`)
@@ -87,7 +87,7 @@ Scenario('should save screenshot for sessions @Puppeteer @Playwright', async fun
8787
await I.saveScreenshot('original.png')
8888
await I.amOnPage('/')
8989
await I.saveScreenshot('main_session.png')
90-
session('john', async () => {
90+
await session('john', async () => {
9191
await I.amOnPage('/form/bug1467')
9292
event.dispatcher.emit(event.test.failed, this)
9393
})

test/unit/mocha/asyncWrapper_test.js

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ describe('AsyncWrapper', () => {
5959

6060
it('should work with async func', async () => {
6161
let counter = 0
62-
test.fn = () => {
62+
test.fn = async () => {
6363
recorder.add('test', async () => {
6464
counter++
6565
counter++
@@ -69,7 +69,9 @@ describe('AsyncWrapper', () => {
6969
}
7070

7171
await setup()
72-
testWrapper(test).fn(() => null)
72+
const wrappedTest = testWrapper(test)
73+
// Wait for the wrapped function to complete
74+
await new Promise(resolve => wrappedTest.fn(resolve))
7375
recorder.add('validation', () => expect(counter).to.eq(4))
7476
return recorder.promise()
7577
})
@@ -81,8 +83,8 @@ describe('AsyncWrapper', () => {
8183
event.dispatcher.on(event.test.started, (started = sinon.spy()))
8284
event.dispatcher.on(event.suite.before, (beforeSuite = sinon.spy()))
8385
event.dispatcher.on(event.suite.after, (afterSuite = sinon.spy()))
84-
await suiteSetup()()
85-
await setup()()
86+
await new Promise(r => suiteSetup()(r))
87+
await new Promise(r => setup()(r))
8688
})
8789

8890
it('should fire events', async () => {
@@ -91,25 +93,27 @@ describe('AsyncWrapper', () => {
9193

9294
// Execute the wrapped test function with a mock done callback
9395
return new Promise((resolve, reject) => {
94-
wrappedTest.fn(async err => {
95-
try {
96-
await teardown()()
97-
await suiteTeardown()()
96+
wrappedTest.fn(err => {
97+
;(async () => {
98+
try {
99+
await new Promise(r => teardown()(r))
100+
await new Promise(r => suiteTeardown()(r))
98101

99-
if (err) {
100-
reject(err)
101-
return
102-
}
102+
if (err) {
103+
reject(err)
104+
return
105+
}
103106

104-
expect(started.called).is.ok
105-
expect(beforeSuite.called).is.ok
106-
expect(afterSuite.called).is.ok
107-
expect(before.called).is.ok
108-
expect(after.called).is.ok
109-
resolve()
110-
} catch (testErr) {
111-
reject(testErr)
112-
}
107+
expect(started.called).is.ok
108+
expect(beforeSuite.called).is.ok
109+
expect(afterSuite.called).is.ok
110+
expect(before.called).is.ok
111+
expect(after.called).is.ok
112+
resolve()
113+
} catch (testErr) {
114+
reject(testErr)
115+
}
116+
})()
113117
})
114118
})
115119
})

0 commit comments

Comments
 (0)