Skip to content

Commit adbe784

Browse files
authored
chore(ember): Make tests less brittle (#6164)
We already had some logic to make test less brittle, but the runloop is a bit unstable, and thus hard to test. So it is easier to just don't test the runloop execution in detail, especially since these are the least interesting spans, and focus on testing the important parts (that are also more stable).
1 parent 9452a1d commit adbe784

File tree

1 file changed

+15
-51
lines changed

1 file changed

+15
-51
lines changed

packages/ember/tests/acceptance/sentry-performance-test.js

Lines changed: 15 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,19 @@ function assertSentryCall(assert, callNumber, options) {
2222
assert.equal(event.spans.length, options.spanCount);
2323
}
2424
if (options.spans) {
25-
event.spans = event.spans.map(s => {
26-
return `${s.op} | ${s.description}`;
27-
});
28-
29-
// FIXME: For some reason, the last `afterRender` and `destroy` run queue event are not always called.
30-
// This is not a blocker, but should be investigated and fixed, as this is the expected output.
31-
const lastSpan = event.spans[event.spans.length - 1];
32-
if (lastSpan === 'ui.ember.runloop.afterRender | undefined') {
33-
event.spans.push('ui.ember.runloop.destroy | undefined');
34-
} else if (lastSpan === 'ui.ember.runloop.render | undefined') {
35-
event.spans.push('ui.ember.runloop.afterRender | undefined', 'ui.ember.runloop.destroy | undefined');
36-
}
37-
38-
assert.deepEqual(event.spans, options.spans, `Has correct spans`);
25+
// instead of checking the specific order of runloop spans (which is brittle),
26+
// we check (below) that _any_ runloop spans are added
27+
const spans = event.spans
28+
.filter(span => !span.op.startsWith('ui.ember.runloop.'))
29+
.map(s => {
30+
return `${s.op} | ${s.description}`;
31+
});
32+
33+
assert.true(
34+
event.spans.some(span => span.op.startsWith('ui.ember.runloop.')),
35+
'it captures runloop spans',
36+
);
37+
assert.deepEqual(spans, options.spans, `Has correct spans`);
3938
}
4039

4140
assert.equal(event.transaction, options.transaction);
@@ -53,7 +52,7 @@ module('Acceptance | Sentry Performance', function (hooks) {
5352
setupSentryTest(hooks);
5453

5554
test('Test transaction', async function (assert) {
56-
assert.expect(6);
55+
assert.expect(7);
5756

5857
await visit('/tracing');
5958

@@ -62,11 +61,6 @@ module('Acceptance | Sentry Performance', function (hooks) {
6261
spans: [
6362
'ui.ember.transition | route:undefined -> route:tracing',
6463
'ui.ember.component.render | component:test-section',
65-
'ui.ember.runloop.actions | undefined',
66-
'ui.ember.runloop.routerTransitions | undefined',
67-
'ui.ember.runloop.render | undefined',
68-
'ui.ember.runloop.afterRender | undefined',
69-
'ui.ember.runloop.destroy | undefined',
7064
],
7165
transaction: 'route:tracing',
7266
tags: {
@@ -77,7 +71,7 @@ module('Acceptance | Sentry Performance', function (hooks) {
7771
});
7872

7973
test('Test navigating to slow route', async function (assert) {
80-
assert.expect(7);
74+
assert.expect(8);
8175

8276
await visit('/tracing');
8377
const button = find('[data-test-button="Transition to slow loading route"]');
@@ -89,45 +83,15 @@ module('Acceptance | Sentry Performance', function (hooks) {
8983
spans: [
9084
'ui.ember.transition | route:tracing -> route:slow-loading-route.index',
9185
'ui.ember.route.before_model | slow-loading-route',
92-
'ui.ember.runloop.actions | undefined',
93-
'ui.ember.runloop.routerTransitions | undefined',
94-
'ui.ember.runloop.render | undefined',
95-
'ui.ember.runloop.afterRender | undefined',
96-
'ui.ember.runloop.destroy | undefined',
9786
'ui.ember.route.model | slow-loading-route',
98-
'ui.ember.runloop.actions | undefined',
99-
'ui.ember.runloop.routerTransitions | undefined',
100-
'ui.ember.runloop.render | undefined',
101-
'ui.ember.runloop.afterRender | undefined',
102-
'ui.ember.runloop.destroy | undefined',
10387
'ui.ember.route.after_model | slow-loading-route',
104-
'ui.ember.runloop.actions | undefined',
105-
'ui.ember.runloop.routerTransitions | undefined',
106-
'ui.ember.runloop.render | undefined',
107-
'ui.ember.runloop.afterRender | undefined',
108-
'ui.ember.runloop.destroy | undefined',
10988
'ui.ember.route.before_model | slow-loading-route.index',
110-
'ui.ember.runloop.actions | undefined',
111-
'ui.ember.runloop.routerTransitions | undefined',
112-
'ui.ember.runloop.render | undefined',
113-
'ui.ember.runloop.afterRender | undefined',
114-
'ui.ember.runloop.destroy | undefined',
11589
'ui.ember.route.model | slow-loading-route.index',
116-
'ui.ember.runloop.actions | undefined',
117-
'ui.ember.runloop.routerTransitions | undefined',
118-
'ui.ember.runloop.render | undefined',
119-
'ui.ember.runloop.afterRender | undefined',
120-
'ui.ember.runloop.destroy | undefined',
12190
'ui.ember.route.after_model | slow-loading-route.index',
122-
'ui.ember.runloop.actions | undefined',
12391
'ui.ember.route.setup_controller | slow-loading-route',
12492
'ui.ember.route.setup_controller | slow-loading-route.index',
125-
'ui.ember.runloop.routerTransitions | undefined',
12693
'ui.ember.component.render | component:slow-loading-list',
12794
'ui.ember.component.render | component:slow-loading-list',
128-
'ui.ember.runloop.render | undefined',
129-
'ui.ember.runloop.afterRender | undefined',
130-
'ui.ember.runloop.destroy | undefined',
13195
],
13296
transaction: 'route:slow-loading-route.index',
13397
durationCheck: duration => duration > SLOW_TRANSITION_WAIT,

0 commit comments

Comments
 (0)