The same set of hooks as per test suite is also available globally, outside the scope of the test. In the case of global hooks, the beforeEach and afterEach refers to a test suite (i.e. test file), and are ran before and after a test suite.

Global before[Each] and after[Each]

You can also have global before and after [asynchronous] methods that can perform an operation before starting the test runner and right before exiting, when all the tests have finished executing.

Similarly, global beforeEach and afterEach will be invoked before and after each test suite (i.e. test file). These ones do receive the Nightwatch browser object.

The methods are defined in the external globals file and invoked using the globals object as context. The callback is the only argument passed and must be called when the operation finishes.

Example:

module.exports = {
  'default' : {
    isLocal : true,
  },
  
'integration' : { isLocal : false },
// External before hook is ran at the beginning of the tests run, before creating the Selenium session before(done) { // run this only for the local-env if (this.isLocal) { // start the local server App.startServer(function() { // server listening done(); }); } else { done(); } },
// External after hook is ran at the very end of the tests run, after closing the Selenium session after(done) { // run this only for the local-env if (this.isLocal) { // stop the local server App.stopServer(function() { // shutting down done(); }); } else { done(); } },
// This will be run before each test suite is started beforeEach(browser, done) { // getting the session info browser.status(function(result) { console.log(result.value); done(); }); },
// This will be run after each test suite is finished afterEach(browser, done) { console.log(browser.currentTest); done(); },
// Called right after the command .navigateTo() is finished async onBrowserNavigate(browser) { return Promise.resolve(); },
// Called right before the command .quite() is finished async onBrowserQuit(browser) { return Promise.resolve(); };
}