fix hanging on nested hook error

This commit is contained in:
Ben Kucera
2020-08-21 16:40:43 -04:00
parent d5ed26ba85
commit e8e29bdaee
3 changed files with 26 additions and 9 deletions
+7 -4
View File
@@ -1010,12 +1010,15 @@ const create = (specWindow, mocha, Cypress, cy) => {
}
const maybeHandleRetry = (runnable, err) => {
if (!err) return
const r = runnable
const isHook = r.type === 'hook'
const isTest = r.type === 'test'
const test = getTest() || getTestFromHook(runnable, getTestById)
const isBeforeEachHook = isHook && !!r.hookName.match(/before each/)
const isAfterEachHook = isHook && !!r.hookName.match(/after each/)
const hookName = isHook && getHookName(r)
const isBeforeEachHook = isHook && !!hookName.match(/before each/)
const isAfterEachHook = isHook && !!hookName.match(/after each/)
const retryAbleRunnable = isTest || isBeforeEachHook || isAfterEachHook
const willRetry = (test._currentRetry < test._retries) && retryAbleRunnable
@@ -1196,8 +1199,8 @@ const create = (specWindow, mocha, Cypress, cy) => {
const isHook = runnable.type === 'hook'
const isAfterEachHook = isHook && runnable.hookName.match(/after each/)
const isBeforeEachHook = isHook && runnable.hookName.match(/before each/)
const isAfterEachHook = isHook && hookName.match(/after each/)
const isBeforeEachHook = isHook && hookName.match(/before each/)
// if we've been told to skip hooks at a certain nested level
// this happens if we're handling a runnable that is going to retry due to failing in a hook
@@ -0,0 +1,19 @@
const { createCypress } = require('../support/helpers')
const { runIsolatedCypress } = createCypress()
describe('issue-8350', () => {
it('does not hang on nested hook', () => {
runIsolatedCypress(() => {
before(() => {
beforeEach(() => {
})
})
describe('ae inside be', () => {
it('t1', () => {
//
})
})
})
})
})
@@ -237,11 +237,6 @@ function createCypress (defaultOptions = {}) {
if (testsInOwnFile) return
generateMochaTestsForWin(specWindow, mochaTestsOrFile)
specWindow.before = () => {}
specWindow.beforeEach = () => {}
specWindow.afterEach = () => {}
specWindow.after = () => {}
specWindow.describe = () => {}
})
cy.stub(autCypress, 'run').snapshot(enableStubSnapshots).log(false).callsFake(runIsolatedCypress)