This is a follow up on comments in #25 starting here.
Background
In preparation to upgrading from Ember 2.18.2 to 3.4.7, I've been refactoring a fairly complex custom ajax service that my app uses to rely on ember-fetch instead of ic-ajax (ember-ajax has its own service implementation that was in conflict, so opted to move all the way up to fetch based solution).
Everything in development mode seemed to be working fine in 2.18.2, but when I ran my full test suite (modern 3.x testing style already migrated), I began to get a number of failures due to tests not waiting for fetch requests to finish as expected by await calls.
What I have observed
In 2.18.2 with ember-fetch 6.3.1, ember-test-helpers 1.1.0, and ember-qunit 4.2.0:
- if I reran the tests individually, most tests would pass as expected
- adding
await settled() calls at a point before the test failure would most times alleviate the test failure when running full suite (after doing this several places, I gave up on this before adding tons of these allover the whole suite)
ember-fetch registerWaiter seems to be working as designed, but is not enough - I added logging to see if the waiter function was being set up and called as well as the decrementing and they were
It was almost like there was leak somewhere...
A coworker wondered if anything would be different if I tried things under Ember 3.4.7. Unfortunately, the problem was still there. However...
What allows the tests to run as expected in Ember 3.4.7, but not 2.18.2
Under Ember 3.4.7 when I changed ember-cli-build.js to the following, the test suite passed!
let app = new EmberApp(defaults, {
// tests: false,
'ember-fetch': {
preferNative: true // later added logic here to only be true in test env
},
...
However, when I circled back and tried this with 2.18.2, I got different failures, e.g. Promise rejected during "Help with a ongoing cost": Cannot read property 'error' of undefined, that I assume are related to native promises not being supported in the same way as later Ember 3.x releases.
Since my ultimate goal is to be able to upgrade away from 2.18.2, I'm personally unblocked, but this does seem like an issue with the polyfil either in ember-fetch or possibly upstream.
(@viniciussbs hopefully my workaround helps you, too)
This is a follow up on comments in #25 starting here.
Background
In preparation to upgrading from Ember
2.18.2to3.4.7, I've been refactoring a fairly complex customajaxservice that my app uses to rely onember-fetchinstead ofic-ajax(ember-ajaxhas its own service implementation that was in conflict, so opted to move all the way up tofetchbased solution).Everything in development mode seemed to be working fine in
2.18.2, but when I ran my full test suite (modern3.xtesting style already migrated), I began to get a number of failures due to tests not waiting forfetchrequests to finish as expected byawaitcalls.What I have observed
In
2.18.2withember-fetch6.3.1,ember-test-helpers1.1.0, andember-qunit4.2.0:await settled()calls at a point before the test failure would most times alleviate the test failure when running full suite (after doing this several places, I gave up on this before adding tons of these allover the whole suite)ember-fetchregisterWaiterseems to be working as designed, but is not enough - I added logging to see if the waiter function was being set up and called as well as the decrementing and they wereIt was almost like there was leak somewhere...
A coworker wondered if anything would be different if I tried things under Ember
3.4.7. Unfortunately, the problem was still there. However...What allows the tests to run as expected in Ember
3.4.7, but not2.18.2Under Ember
3.4.7when I changedember-cli-build.jsto the following, the test suite passed!However, when I circled back and tried this with
2.18.2, I got different failures, e.g.Promise rejected during "Help with a ongoing cost": Cannot read property 'error' of undefined, that I assume are related to native promises not being supported in the same way as later Ember 3.x releases.Since my ultimate goal is to be able to upgrade away from
2.18.2, I'm personally unblocked, but this does seem like an issue with the polyfil either inember-fetchor possibly upstream.(@viniciussbs hopefully my workaround helps you, too)