Skip to content

Commit 57584dc

Browse files
committed
e2e/acceptance/front-page: Migrate from mirage to @crates-io/msw
1 parent 91a98ad commit 57584dc

File tree

1 file changed

+16
-23
lines changed

1 file changed

+16
-23
lines changed

e2e/acceptance/front-page.spec.ts

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { test, expect } from '@/e2e/helper';
1+
import { defer } from '@/e2e/deferred';
2+
import { expect, test } from '@/e2e/helper';
3+
import { loadFixtures } from '@crates-io/msw/fixtures';
4+
import { http, HttpResponse } from 'msw';
25

36
test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
47
test.use({ locale: 'en' });
5-
test('visiting /', async ({ page, mirage, percy, a11y }) => {
6-
await mirage.addHook(server => {
7-
server.loadFixtures();
8-
});
8+
test('visiting /', async ({ page, msw, percy, a11y }) => {
9+
loadFixtures(msw.db);
910

1011
await page.goto('/');
1112

@@ -19,10 +20,10 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
1920
await expect(page.locator('[data-test-total-downloads] [data-test-value]')).toHaveText('143,345');
2021
await expect(page.locator('[data-test-total-crates] [data-test-value]')).toHaveText('23');
2122

22-
await expect(page.locator('[data-test-new-crates] [data-test-crate-link="0"]')).toHaveText('Inflector v1.0.0');
23+
await expect(page.locator('[data-test-new-crates] [data-test-crate-link="0"]')).toHaveText('serde v1.0.0');
2324
await expect(page.locator('[data-test-new-crates] [data-test-crate-link="0"]')).toHaveAttribute(
2425
'href',
25-
'/crates/Inflector',
26+
'/crates/serde',
2627
);
2728

2829
await expect(page.locator('[data-test-most-downloaded] [data-test-crate-link="0"]')).toHaveText('serde');
@@ -41,22 +42,18 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
4142
await a11y.audit();
4243
});
4344

44-
test('error handling', async ({ page, mirage }) => {
45-
await mirage.addHook(server => {
46-
// Snapshot the routes so we can restore it later
47-
globalThis._routes = server._config.routes;
48-
server.get('/api/v1/summary', {}, 500);
49-
});
45+
test('error handling', async ({ page, msw }) => {
46+
await msw.worker.use(http.get('/api/v1/summary', () => HttpResponse.json({}, { status: 500 })));
5047

5148
await page.goto('/');
5249
await expect(page.locator('[data-test-lists]')).toHaveCount(0);
5350
await expect(page.locator('[data-test-error-message]')).toBeVisible();
5451
await expect(page.locator('[data-test-try-again-button]')).toBeEnabled();
5552

56-
await page.evaluate(() => {
57-
globalThis.deferred = require('rsvp').defer();
58-
server.get('/api/v1/summary', () => globalThis.deferred.promise);
59-
});
53+
await msw.worker.resetHandlers();
54+
55+
let deferred = defer();
56+
msw.worker.use(http.get('/api/v1/summary', () => deferred.promise));
6057

6158
const button = page.locator('[data-test-try-again-button]');
6259
await button.click();
@@ -65,12 +62,8 @@ test.describe('Acceptance | front page', { tag: '@acceptance' }, () => {
6562
await expect(page.locator('[data-test-error-message]')).toBeVisible();
6663
await expect(page.locator('[data-test-try-again-button]')).toBeDisabled();
6764

68-
await page.evaluate(async () => {
69-
// Restore the routes
70-
globalThis._routes.call(server);
71-
const data = await globalThis.fetch('/api/v1/summary').then(r => r.json());
72-
return globalThis.deferred.resolve(data);
73-
});
65+
deferred.resolve();
66+
7467
await expect(page.locator('[data-test-lists]')).toBeVisible();
7568
await expect(page.locator('[data-test-error-message]')).toHaveCount(0);
7669
await expect(page.locator('[data-test-try-again-button]')).toHaveCount(0);

0 commit comments

Comments
 (0)