-
-
Notifications
You must be signed in to change notification settings - Fork 743
Description
Hi every one!
I was tried to implement new feature in CodeceptJS: BeforeSuite and AfterSuite hooks in Feature spec (check #231). But I faced with two problems:
1. CodeceptJS doesn't wait while BeforeSuite hook finished. It starts the test scenario in parallel with hook. (There was my fault. The syncDown method doesn't not complete GET request synchronously. Fixed)
2. AfterSuite will not be called if there is any failed scenario in suite (BTW already implemented After hook has the same problem.)
Below is stacktrace for my simple test in --verbose mode
C:\Users\andrey.pshenkin\git\4game-feature-tests > npm run codeceptjs -- --grep=system-acc-4
> 4game-feature-tests@ codeceptjs C:\Users\andrey.pshenkin\git\4game-feature-tests
> codeceptjs run --verbose "--grep=system-acc-4"
Using codecept.js as configuration is deprecated, please rename it to codecept.conf.js
CodeceptJS v0.4.5
Using test root "C:\Users\andrey.pshenkin\git\4game-feature-tests"
[1] Starting recording promises
> WebDriverIO._beforeSuite
[1] Queued | hook WebDriverIO._beforeSuite()
> WebdriverCSS._beforeSuite
[1] Queued | hook WebdriverCSS._beforeSuite()
[1] Queued | () => done()
referral-system-acc-4-qa-unauth. --
[2] Starting recording promises
Emitted | suite.before
> WebDriverIO._beforeSuite
[2] Queued | hook WebDriverIO._beforeSuite()
> WebdriverCSS._beforeSuite
[2] Queued | hook WebdriverCSS._beforeSuite()
[2] Queued | syncDown: 4game-referral-system
Emitted | step.before (I sync down "4game-referral-system")
* I sync down "4game-referral-system"
Emitted | step.after (I sync down "4game-referral-system")
test1
[3] Starting recording promises
Emitted | test.before
> WebDriverIO._before
[3] Queued | hook WebDriverIO._before()
> WebdriverCSS._before
[3] Queued | hook WebdriverCSS._before()
Emitted | test.start ([object Object])
[3] Queued | amOnPage: /summon/
[3] Queued | seeCurrentUrlEquals: /summon/
[3] Queued | finish test
Emitted | step.before (I am on page "/summon/")
* I am on page "/summon/"
Emitted | step.after (I am on page "/summon/")
> [Url] https://ru.4gametest.com/summon/
Emitted | step.before (I see current url equals "/summon/")
* I see current url equals "/summon/"
Emitted | step.after (I see current url equals "/summon/")
√ OK in 13566ms
Emitted | test.after
> WebDriverIO._after
[3] Queued | hook WebDriverIO._after()
> WebdriverCSS._after
[3] Queued | hook WebdriverCSS._after()
test2
[4] Starting recording promises
Emitted | test.before
> WebDriverIO._before
[4] Queued | hook WebDriverIO._before()
> WebdriverCSS._before
[4] Queued | hook WebdriverCSS._before()
Emitted | test.start ([object Object])
[4] Queued | amOnPage: /summon/
[4] Queued | seeCurrentUrlEquals: /summon/test
[4] Queued | finish test
Emitted | step.before (I am on page "/summon/")
* I am on page "/summon/"
Emitted | step.after (I am on page "/summon/")
> [Url] https://ru.4gametest.com/summon/
Emitted | step.before (I see current url equals "/summon/test")
* I see current url equals "/summon/test"
Emitted | step.after (I see current url equals "/summon/test")
[4] Error | Error
[4] Starting <teardown> session
Emitted | test.failed ([object Object])
> WebDriverIO._failed
[4] <teardown> Queued | hook WebDriverIO._failed()
> WebdriverCSS._failed
[4] <teardown> Queued | hook WebdriverCSS._failed()
[4] <teardown> Queued | () => done(err)
[4] <teardown> Stopping recording promises
> Screenshot has been saved to C:\Users\andrey.pshenkin\git\4game-feature-tests\output\test2.failed.png
× FAILED in 12287ms
Emitted | test.after
> WebDriverIO._after
[4] <teardown> Queued | hook WebDriverIO._after()
> WebdriverCSS._after
[4] <teardown> Queued | hook WebdriverCSS._after()
Emitted | suite.after
> WebDriverIO._afterSuite
[4] <teardown> Queued | hook WebDriverIO._afterSuite()
> WebdriverCSS._afterSuite
[4] <teardown> Queued | hook WebdriverCSS._afterSuite()
[5] Starting recording promises
> WebDriverIO._afterSuite
[5] Queued | hook WebDriverIO._afterSuite()
> WebdriverCSS._afterSuite
[5] Queued | hook WebdriverCSS._afterSuite()
[5] Queued | () => done()
-- FAILURES:
1) referral-system-acc-4-qa-unauth.:
test2:
expected url of current page '/summon/test' to equal 'https://ru.4gametest.com/summon/'
Scenario Steps:
- I.seeCurrentUrlEquals("/summon/test") at Test.<anonymous> (C:\Users\andrey.pshenkin\git\4game-feature-tests\tests\4game-referral-system\referral-system-acc-4-qa-unauth_test.js:39:7)
- I.amOnPage("/summon/") at Test.<anonymous> (C:\Users\andrey.pshenkin\git\4game-feature-tests\tests\4game-referral-system\referral-system-acc-4-qa-unauth_test.js:38:7)
undefined:
FAIL | 1 passed, 1 failed // 39s
Emitted | global.result ([object Object])
npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "codeceptjs" "--" "--grep=system-acc-4"
npm ERR! node v4.5.0
npm ERR! npm v2.15.9
npm ERR! code ELIFECYCLE
npm ERR! 4game-feature-tests@ codeceptjs: `codeceptjs run --verbose "--grep=system-acc-4"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the 4game-feature-tests@ codeceptjs script 'codeceptjs run --verbose "--grep=system-acc-4"'.
npm ERR! This is most likely a problem with the 4game-feature-tests package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! codeceptjs run --verbose "--grep=system-acc-4"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs 4game-feature-tests
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls 4game-feature-tests
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! C:\Users\andrey.pshenkin\git\4game-feature-tests\npm-debug.log
C:\Users\andrey.pshenkin\git\4game-feature-tests >
Here is my test in normal view
Feature('referral-system-acc-4-qa-unauth.');
BeforeSuite((I) => {
I.syncDown('4game-referral-system');
});
AfterSuite((I) => {
I.syncUp();
})
Scenario('test1', (I, referralPage, genericPage) => {
I.amOnPage('/summon/');
I.seeCurrentUrlEquals('/summon/');
});
Scenario('test2', (I, referralPage, genericPage) => {
I.amOnPage('/summon/');
I.seeCurrentUrlEquals('/summon/test');
});
During my test I try to sync down files from the remote server and after test suite sunc up files to the remote server
BeforeSuite
completes during first test and AfterSuite
doesn't run at all.
Here is my code for this feature
#231
Thanks in advance