Skip to content

Commit d841f41

Browse files
authored
Merge pull request #565 from Gaurav0/flakey_tests_2
Try to fix flakey tests again
2 parents e1df556 + 4cf7375 commit d841f41

11 files changed

Lines changed: 128 additions & 141 deletions

File tree

app/services/ember-cli.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,9 +354,7 @@ export default Ember.Service.extend({
354354
testJSFiles.forEach(jsFile => {
355355
depScriptTags += `<script type="text/javascript" src="${window.assetMap[jsFile]}"></script>`;
356356
});
357-
358-
// Temporary fix; real fix waiting for https://github.com/qunitjs/qunit/issues/1119
359-
// Real fix should use copy of QUnitAdapter from ember-qunit.
357+
360358
testStuff += `<script type="text/javascript">
361359
Ember.Test.adapter = require('ember-qunit').QUnitAdapter.create();
362360
</script>`;

blueprints/twiddle.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
},
1010
"dependencies": {
1111
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
12-
"ember": "2.12.0",
13-
"ember-template-compiler": "2.12.0",
14-
"ember-testing": "2.12.0"
12+
"ember": "2.12.2",
13+
"ember-template-compiler": "2.12.2",
14+
"ember-testing": "2.12.2"
1515
},
1616
"addons": {
1717
"ember-data": "2.12.1"

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
"ember-cli-test-loader": "~1.1.0",
6161
"ember-cli-uglify": "~1.2.0",
6262
"ember-concurrency": "~0.8.2",
63-
"ember-data": "~2.11.0",
63+
"ember-data": "~2.12.0",
6464
"ember-disable-proxy-controllers": "1.0.1",
6565
"ember-export-application-global": "~1.1.1",
6666
"ember-git-version": "~0.1.1",

tests/.jshintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"runGist",
2828
"runRevision",
2929
"waitForLoadedIFrame",
30+
"waitForUnloadedIFrame",
3031
"outputPane",
3132
"outputContents"
3233
],

tests/acceptance/gist-test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ test('editing a file updates gist', function(assert) {
363363
assert.equal(find(firstColumnTextarea).val(), '<div class="index">some text</div>');
364364

365365
click(".run-now");
366+
waitForUnloadedIFrame();
366367
waitForLoadedIFrame();
367368
});
368369

@@ -397,7 +398,6 @@ test('own gist can be copied into a new one', function(assert) {
397398

398399
click("#live-reload");
399400
click('.test-copy-action');
400-
click(".run-now");
401401
waitForLoadedIFrame();
402402
});
403403

@@ -429,6 +429,7 @@ test('accessing /:gist/copy creates a new Twiddle with a copy of the gist', func
429429
click("#live-reload");
430430
visit('/35de43cb81fc35ddffb2/copy');
431431
click(".run-now");
432+
waitForUnloadedIFrame();
432433
waitForLoadedIFrame();
433434
});
434435

tests/acceptance/git-revision-test.js

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,8 @@ test('Able to copy a revision into new gist', function(assert) {
5656

5757
click("#live-reload");
5858
click('.test-copy-action');
59-
60-
andThen(function() {
61-
click(".run-now");
62-
waitForLoadedIFrame();
63-
});
59+
waitForUnloadedIFrame();
60+
waitForLoadedIFrame();
6461

6562
andThen(function() {
6663
assert.equal(find('.title input').val(), "New Twiddle", "Description is reset");
@@ -88,8 +85,6 @@ test('Able to go from current version to revision and back via the UI', function
8885

8986
andThen(() => {
9087
assert.equal(outputContents('div'), 'Hello, World!');
91-
92-
click("#live-reload");
9388
});
9489

9590
createGist({
@@ -107,15 +102,15 @@ test('Able to go from current version to revision and back via the UI', function
107102

108103
andThen(() => {
109104
click(".test-version-action");
110-
click(".run-now");
105+
waitForUnloadedIFrame();
111106
waitForLoadedIFrame();
112107
});
113108

114109
andThen(() => {
115110
assert.equal(outputContents('div'), 'Hello, ...');
116111

117112
click(".test-show-current-version");
118-
click(".run-now");
113+
waitForUnloadedIFrame();
119114
waitForLoadedIFrame();
120115
});
121116

tests/helpers/wait-for-loaded-iframe.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Ember from "ember";
22

3-
const { RSVP, run } = Ember;
3+
const { RSVP, run, warn } = Ember;
44

55
export default function(app, url) {
66
let iframe_window;
@@ -13,21 +13,23 @@ export default function(app, url) {
1313

1414
run.schedule('afterRender', function waitForRender() {
1515
function onWindowLoad() {
16-
iframe_window.removeEventListener('load', onWindowLoad);
16+
iframe_window.document.removeEventListener('DOMContentLoaded', onWindowLoad);
1717
resolve();
1818
}
1919

2020
if (times++ >= 10) {
21+
warn('Timeout: Twiddle has failed to load');
2122
run.cancelTimers();
2223
} else if (app.testHelpers.find('iframe').length === 0) {
2324
run.later(waitForRender, 10);
2425
return;
2526
}
2627
iframe_window = outputPane();
27-
if (iframe_window.document.readyState === 'complete') {
28+
let readyState = iframe_window.document.readyState;
29+
if (readyState === 'complete' || readyState === 'interactive') {
2830
resolve();
2931
} else {
30-
iframe_window.addEventListener('load', onWindowLoad);
32+
iframe_window.document.addEventListener('DOMContentLoaded', onWindowLoad);
3133
}
3234
});
3335
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import Ember from 'ember';
2+
import wait from 'ember-test-helpers/wait';
3+
4+
const { Test } = Ember;
5+
6+
function hasNoIframe() {
7+
return this.app.testHelpers.find('iframe').length > 0;
8+
}
9+
10+
export default function(app) {
11+
let ctx = { app };
12+
Test.registerWaiter(ctx, hasNoIframe);
13+
14+
return wait().then(() => {
15+
Test.unregisterWaiter(ctx, hasNoIframe);
16+
});
17+
}

tests/test-helper.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import createGist from "./helpers/create-gist";
77
import runGist from "./helpers/run-gist";
88
import runRevision from "./helpers/run-revision";
99
import waitForLoadedIFrame from './helpers/wait-for-loaded-iframe';
10+
import waitForUnloadedIFrame from './helpers/wait-for-unloaded-iframe';
1011

1112
setResolver(resolver);
1213

@@ -25,3 +26,4 @@ Ember.Test.registerHelper('createGist', createGist);
2526
Ember.Test.registerAsyncHelper('runGist', runGist);
2627
Ember.Test.registerAsyncHelper('runRevision', runRevision);
2728
Ember.Test.registerAsyncHelper('waitForLoadedIFrame', waitForLoadedIFrame);
29+
Ember.Test.registerAsyncHelper('waitForUnloadedIFrame', waitForUnloadedIFrame);

tests/unit/services/ember-cli-test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,25 @@ test('compiling a gist works', function(assert) {
3030
filePath: 'controllers/application.js',
3131
extension: '.js',
3232
content: 'import Ember from "ember";\n\nexport default Ember.Controller.extend({appName:"foo"});'
33+
}),
34+
Ember.Object.create({
35+
filePath: 'twiddle.json',
36+
extension: '.json',
37+
content: `{
38+
"version": "0.7.0",
39+
"EmberENV": {
40+
"FEATURES": {}
41+
},
42+
"options": {
43+
"use_pods": false,
44+
"enable-testing": false
45+
},
46+
"dependencies": {
47+
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
48+
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.3/ember.debug.js",
49+
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.0/ember-data.js"
50+
}
51+
}`
3352
})
3453
])
3554
});

0 commit comments

Comments
 (0)