Ember testing: You have turned on testing mode, which disabled the run-loop's autorun
ember-cli, ember-qunit, ember-testing, ember.js, integration-testing
Solution
I realize I am late to the party, but here goes anyway:
Somewhere in your component or application code (that is, NOT in the test code), you probably listen to some event outside of Ember (e.g. a DOM event, through jQuery, or something like that), but try to interact with it during that handler's run. These handler functions must be wrapped in `Ember.run.bind()`, or they won't have a runloop during a test. `Ember.run.bind()` will also set `this` for you during the handler.
If you don't wrap your event callbacks in `Ember.run.bind()`, the code will probably still run without hassle during a normal run of the application because the autorun feature will find runloop-demanding (for example, if you schedule something using `Ember.run.schedule()` during the handler) interactions with Ember in the code and start a runloop for them, but it's turned off in tests.
Problem
I am trying to write a simple Ember integration test and continue to get the frustrating run loop error despite using `Ember.run`. I've had a nightmare of a time trying to get this to work, if anyone could help me I'd be so grateful. Specifically, I can see the test sign in and begin loading the next page (as it should), but as soon as the test finishes I get that error. This is regarding the second test, the first passes (as nothing is async I believe). ``` import Ember from 'ember'; import startApp from 'jobs-tuftsdaily/tests/helpers/start-app'; import exists from 'jobs-tuftsdaily/tests/helpers/start-app'; var App; module('Integration - Landing Page', { setup: function() { App = startApp(); }, teardown: function() { Ember.run(App, 'destroy'); } }); test('Should load content', function() { visit('/').then(function() { ok(exists("*"), "Found HTML!"); ok(exists('label:eq(4)'), "Slug label on page"); }); }); test('Should sign in test user', function() { Ember.run(function() { visit('/').andThen(function() { return fillIn("input[name=email]", "test@test.com"); }).andThen(function() { return fillIn("input[type=password]", "password"); }).andThen(function() { return click("button"); }).andThen(function() { ok(1, "stupid test passed"); }); }); }); ```