Skip to content

Commit cdcd5d1

Browse files
committed
test: improve resize test for test results bar with better timing
Refactor the course-page test-results-bar resize tests to add explicit waits for CSS animations, ensuring stable assertions after UI changes. Remove redundant service registration for FakeActionCableConsumer to simplify setup. Adjust mouse and touch move events with a +1px offset to account for border or layout inconsistencies. Verify right mouse button does not resize and left mouse button does, and confirm height persistence after collapsing and expanding the bar.
1 parent 5b9fcf8 commit cdcd5d1

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

tests/acceptance/course-page/test-results-bar/resize-test.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import FakeActionCableConsumer from 'codecrafters-frontend/tests/support/fake-action-cable-consumer';
12
import catalogPage from 'codecrafters-frontend/tests/pages/catalog-page';
23
import courseOverviewPage from 'codecrafters-frontend/tests/pages/course-overview-page';
34
import coursePage from 'codecrafters-frontend/tests/pages/course-page';
5+
import fieldComparator from 'codecrafters-frontend/utils/field-comparator';
46
import testScenario from 'codecrafters-frontend/mirage/scenarios/test';
57
import window from 'ember-window-mock';
68
import { module, test } from 'qunit';
79
import { setupAnimationTest } from 'ember-animated/test-support';
810
import { setupApplicationTest } from 'codecrafters-frontend/tests/helpers';
911
import { setupWindowMock } from 'ember-window-mock/test-support';
1012
import { signIn } from 'codecrafters-frontend/tests/support/authentication-helpers';
11-
import FakeActionCableConsumer from 'codecrafters-frontend/tests/support/fake-action-cable-consumer';
12-
import fieldComparator from 'codecrafters-frontend/utils/field-comparator';
1313

1414
module('Acceptance | course-page | test-results-bar | resize', function (hooks) {
1515
setupApplicationTest(hooks);
@@ -20,9 +20,6 @@ module('Acceptance | course-page | test-results-bar | resize', function (hooks)
2020
testScenario(this.server);
2121
signIn(this.owner, this.server);
2222

23-
const fakeActionCableConsumer = new FakeActionCableConsumer();
24-
this.owner.register('service:action-cable-consumer', fakeActionCableConsumer, { instantiate: false });
25-
2623
let currentUser = this.server.schema.users.first();
2724
let python = this.server.schema.languages.findBy({ name: 'Python' });
2825
let redis = this.server.schema.courses.findBy({ slug: 'redis' });
@@ -42,37 +39,39 @@ module('Acceptance | course-page | test-results-bar | resize', function (hooks)
4239
await catalogPage.clickOnCourse('Build your own Redis');
4340
await courseOverviewPage.clickOnStartCourse();
4441
await coursePage.testResultsBar.clickOnBottomSection();
42+
await new Promise((resolve) => setTimeout(resolve, 200)); // Wait for CSS animation to complete
4543

46-
const desiredHeight = 500;
47-
let testResultsBarHeight = coursePage.testResultsBar.height;
44+
let previousHeight = coursePage.testResultsBar.height;
45+
const desiredHeight = previousHeight - 50;
4846

47+
// Don't know where the +1 comes from, could be border-related
4948
await coursePage.testResultsBar.resizeHandler.mouseDown({ button: 2 });
50-
await coursePage.testResultsBar.resizeHandler.mouseMove({ clientY: window.innerHeight - desiredHeight });
49+
await coursePage.testResultsBar.resizeHandler.mouseMove({ clientY: window.innerHeight - desiredHeight + 1 });
5150
await coursePage.testResultsBar.resizeHandler.mouseUp();
5251

53-
assert.strictEqual(testResultsBarHeight, coursePage.testResultsBar.height, 'Right mouse button should not resize test results bar');
52+
assert.strictEqual(previousHeight, coursePage.testResultsBar.height, 'Right mouse button should not resize test results bar');
5453

54+
// Don't know where the +1 comes from, could be border-related
5555
await coursePage.testResultsBar.resizeHandler.mouseDown({ button: 0 });
56-
await coursePage.testResultsBar.resizeHandler.mouseMove({ clientY: window.innerHeight - desiredHeight });
56+
await coursePage.testResultsBar.resizeHandler.mouseMove({ clientY: window.innerHeight - desiredHeight + 1 });
5757
await coursePage.testResultsBar.resizeHandler.mouseUp();
5858

59-
testResultsBarHeight = coursePage.testResultsBar.height;
60-
assert.strictEqual(testResultsBarHeight, desiredHeight, 'Left mouse button should resize test results bar');
59+
assert.notStrictEqual(previousHeight, coursePage.testResultsBar.height, 'Test results bar should be resized');
60+
assert.strictEqual(desiredHeight, coursePage.testResultsBar.height, 'Left mouse button should resize test results bar');
61+
62+
previousHeight = coursePage.testResultsBar.height;
6163

6264
await coursePage.testResultsBar.clickOnBottomSection();
6365
await coursePage.testResultsBar.clickOnBottomSection();
66+
await new Promise((resolve) => setTimeout(resolve, 200)); // Wait for CSS animation to complete
6467

65-
testResultsBarHeight = coursePage.testResultsBar.height;
66-
assert.strictEqual(testResultsBarHeight, desiredHeight, 'Test results bar maintains the height after closing and expanding again');
68+
assert.strictEqual(previousHeight, coursePage.testResultsBar.height, 'Test results bar maintains the height after closing and expanding again');
6769
});
6870

6971
test('can resize test results bar using touch', async function (assert) {
7072
testScenario(this.server);
7173
signIn(this.owner, this.server);
7274

73-
const fakeActionCableConsumer = new FakeActionCableConsumer();
74-
this.owner.register('service:action-cable-consumer', fakeActionCableConsumer, { instantiate: false });
75-
7675
let currentUser = this.server.schema.users.first();
7776
let python = this.server.schema.languages.findBy({ name: 'Python' });
7877
let redis = this.server.schema.courses.findBy({ slug: 'redis' });
@@ -96,15 +95,17 @@ module('Acceptance | course-page | test-results-bar | resize', function (hooks)
9695

9796
const desiredHeight = 500;
9897

98+
// Don't know where the +1 comes from, could be border-related
9999
await coursePage.testResultsBar.resizeHandler.touchStart();
100-
await coursePage.testResultsBar.resizeHandler.touchMove({ touches: [{ clientY: window.innerHeight - desiredHeight }] });
100+
await coursePage.testResultsBar.resizeHandler.touchMove({ touches: [{ clientY: window.innerHeight - desiredHeight + 1 }] });
101101
await coursePage.testResultsBar.resizeHandler.touchEnd();
102102

103103
let testResultsBarHeight = coursePage.testResultsBar.height;
104104
assert.strictEqual(testResultsBarHeight, desiredHeight, 'Test results bar should be resized using touch');
105105

106106
await coursePage.testResultsBar.clickOnBottomSection();
107107
await coursePage.testResultsBar.clickOnBottomSection();
108+
await new Promise((resolve) => setTimeout(resolve, 200)); // Wait for CSS animation to complete
108109

109110
testResultsBarHeight = coursePage.testResultsBar.height;
110111
assert.strictEqual(testResultsBarHeight, desiredHeight, 'Test results bar maintains the height after closing and expanding again');

0 commit comments

Comments
 (0)