nightwatch: possible EventEmitter memory leak detected. 11 error listeners added

If I write a test with 10 or more steps, I get this warning:

(node) warning: possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at ClientManager.addListener (events.js:179:15)
    at {NPM_INSTALL_DIR}\node_modules\nightwatch\lib\runner\testcase.js:61:10
    at _fulfilled ({NPM_INSTALL_DIR}\node_modules\nightwatch\node_modules\q\q.js:794:54)
    at self.promiseDispatch.done ({NPM_INSTALL_DIR}\node_modules\nightwatch\node_modules\q\q.js:823:30)
    at Promise.promise.promiseDispatch ({NPM_INSTALL_DIR}\node_modules\nightwatch\node_modules\q\q.js:756:13)
    at {NPM_INSTALL_DIR}\node_modules\nightwatch\node_modules\q\q.js:516:49
    at flush ({NPM_INSTALL_DIR}\node_modules\nightwatch\node_modules\q\q.js:110:17)
    at process._tickCallback (node.js:355:11)

The warning makes sense, but it is annoying. So far, I’ve just had to keep my steps below 10 per test. Any other workarounds/solutions are welcome!

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 24 (4 by maintainers)

Most upvoted comments

@beatfactor This is happening again in 1.0.11

(node:5846) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 complete listeners added. Use emitter.setMaxListeners() to increase limit

 win7chrome [Register Test] Test Suite 
 win7chrome ========================== 
 win7chrome Results for:  Register - Step 1 
 win7chrome ✔ Element <body> was present after 256 milliseconds. 
 win7chrome ✔ Element <#register_your_details_details_forename> was present after 110 milliseconds. 
 win7chrome ✔ Element <#register_your_details_details_surname> was present after 132 milliseconds. 
 win7chrome ✔ Element <#register_your_details_email> was present after 136 milliseconds. 
 win7chrome ✔ Element <#register_your_details_password> was present after 99 milliseconds. 
 win7chrome ✔ Element <#register_your_details_details_subscribe> was present after 167 milliseconds. 
 win7chrome ✔ Element <#register-step1-btn> was present after 115 milliseconds. 
 win7chrome ✔ Element <#register-step1-btn> was not present after 197 milliseconds. 
 win7chrome ✔ [Register Test] Register - Step 1 (18.023s) 
 win7chrome Results for:  Register - Step 2 
 win7chrome ✔ Element <body> was present after 124 milliseconds. 
 win7chrome ✔ Element <#register_your_role_roles_2> was present after 153 milliseconds. 
 win7chrome ✔ Element <#register_your_role_roles_6> was present after 133 milliseconds. 
 win7chrome ✔ Element <#register_your_role_otherRole> was present after 134 milliseconds. 
 win7chrome ✔ Element <#register-step2-btn> was present after 112 milliseconds. 
 win7chrome ✔ Element <#register-step2-btn> was not present after 217 milliseconds. 
 win7chrome ✔ [Register Test] Register - Step 2 (7.462s) 
 win7chrome Results for:  Register - Step 3 
 win7chrome ✔ Element <body> was present after 128 milliseconds. 
 win7chrome ✔ Element <#register_your_teaching_details_curriculum_3> was present after 124 milliseconds. 
 win7chrome ✔ Element <#register_your_teaching_details_curriculum_2> was present after 172 milliseconds. 
 win7chrome ✔ Element <#register_your_teaching_details_agesTaught > span:nth-child(1) > label> was present after 128 milliseconds. 
 win7chrome ✔ Element <#register_your_teaching_submit> was present after 140 milliseconds. 
 win7chrome ✔ Element <#register_your_teaching_submit> was not present after 234 milliseconds. 
 win7chrome ✔ [Register Test] Register - Step 3 (7.993s) 
 win7chrome Results for:  Register - Step 4 
 win7chrome ✔ Element <body> was present after 103 milliseconds. 
 win7chrome ✔ Element <#register_school_address_lookup_postcode> was present after 117 milliseconds. 
 win7chrome ✔ Element <#register_school_address_lookup_find> was present after 109 milliseconds. 
 win7chrome ✔ Element <.grey-message-box> was present after 272 milliseconds. 
 win7chrome ✔ Element <#manual-address-entry> was present after 140 milliseconds. 
 win7chrome ✔ Element <.grey-message-box> was not present after 216 milliseconds. 
 win7chrome ✔ Element <#skip-this-step> was present after 137 milliseconds. 
 win7chrome ✔ Element <#register_school_address_entry_submit> was not present after 148 milliseconds. 
 win7chrome ✔ [Register Test] Register - Step 4 (16.076s) 
 win7chrome Results for:  Register - Thank you 
 win7chrome ✔ Element <body> was present after 89 milliseconds. 
 win7chrome ✔ Element <#view-activities> was present after 113 milliseconds. 
 win7chrome ✔ Element <#view-activities> was not present after 92 milliseconds. 
 win7chrome ✔ Passed [equal]: My Activities - Explorify == My Activities - Explorify 
 win7chrome (node:5846) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 complete listeners added. Use emitter.setMaxListeners() to increase limit 
 win7chrome (node:5846) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit 
 win7chrome ✔ Element <.popup__welcome-btn--one> was present after 133 milliseconds. 
 win7chrome ✖ Timed out while waiting for element <.popup__welcome-btn--two> to be present for 500 milliseconds. - expected "found" but got: 1m"not found" 

This is running in Travis

Hi

Please reopen this issue.

I encountered the same issue with nightwatch 1.0.14

(node:36519) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit

Best regards

Hi everybody, I have also encountered this warning message.

process.setMaxListeners(0)

Didn’t helped, but I solved it in this way:

require('events').EventEmitter.defaultMaxListeners = 100;

durty, but at least it works

As per @kschingiz Adding require('events').EventEmitter.defaultMaxListeners = 100; to the top of nightwatch.conf.js silenced the error for me too.

Hi @beatfactor, could you reopen this?

Working for me just as @mpvosseller said but honestly I don’t like it, can you reopen the issue please @beatfactor

FWIW I identified a particular long running test that was causing this issue. I set the following in the test file to ensure that the usual limit on event listeners was preserved elsewhere:

...
const {EventEmitter} = require('events');

module.exports = {
  beforeEach: client => {
    // Increase max listeners for this long running test
    EventEmitter.defaultMaxListeners = 100;
    return ...;
  },
  ..., // Run long test
  afterEach: () => {
    // Reset max listeners to the node.js default once the test is complete.
    EventEmitter.defaultMaxListeners = 10;
  }
};