Skip to content

Commit 4a984f1

Browse files
committed
e2e/acceptance/readme-rendering: Migrate from mirage to @crates-io/msw
1 parent 5e4529e commit 4a984f1

File tree

1 file changed

+14
-29
lines changed

1 file changed

+14
-29
lines changed

e2e/acceptance/readme-rendering.spec.ts

Lines changed: 14 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect, test } from '@/e2e/helper';
2-
import { Response } from 'miragejs';
2+
import { http, HttpResponse } from 'msw';
33

44
const README_HTML = `
55
<p><strong>Serde is a framework for <em>ser</em>ializing and <em>de</em>serializing Rust data structures efficiently and generically.</strong></p>
@@ -85,14 +85,9 @@ graph TD;
8585
`;
8686

8787
test.describe('Acceptance | README rendering', { tag: '@acceptance' }, () => {
88-
test('it works', async ({ page, mirage, percy }) => {
89-
await page.addInitScript(readmeHTML => {
90-
globalThis.readmeHTML = readmeHTML;
91-
}, README_HTML);
92-
await mirage.addHook(server => {
93-
let crate = server.create('crate', { name: 'serde' });
94-
server.create('version', { crate, num: '1.0.0', readme: globalThis.readmeHTML });
95-
});
88+
test('it works', async ({ page, msw, percy }) => {
89+
let crate = msw.db.crate.create({ name: 'serde' });
90+
msw.db.version.create({ crate, num: '1.0.0', readme: README_HTML });
9691

9792
await page.goto('/crates/serde');
9893
const readme = page.locator('[data-test-readme]');
@@ -105,38 +100,28 @@ test.describe('Acceptance | README rendering', { tag: '@acceptance' }, () => {
105100
await percy.snapshot();
106101
});
107102

108-
test('it shows a fallback if no readme is available', async ({ page, mirage }) => {
109-
await mirage.addHook(server => {
110-
let crate = server.create('crate', { name: 'serde' });
111-
server.create('version', { crate, num: '1.0.0' });
112-
});
103+
test('it shows a fallback if no readme is available', async ({ page, msw }) => {
104+
let crate = msw.db.crate.create({ name: 'serde' });
105+
msw.db.version.create({ crate, num: '1.0.0' });
113106

114107
await page.goto('/crates/serde');
115108
await expect(page.locator('[data-test-no-readme]')).toBeVisible();
116109
});
117110

118-
test('it shows an error message and retry button if loading fails', async ({ page, mirage }) => {
119-
await page.exposeBinding('resp200', () => new Response(200, { 'Content-Type': 'text/html' }, 'foo'));
111+
test('it shows an error message and retry button if loading fails', async ({ page, msw }) => {
112+
let crate = msw.db.crate.create({ name: 'serde' });
113+
msw.db.version.create({ crate, num: '1.0.0', readme: 'foo' });
120114

121-
await mirage.addHook(server => {
122-
let crate = server.create('crate', { name: 'serde' });
123-
server.create('version', { crate, num: '1.0.0' });
124-
125-
server.logging = true;
126-
// Simulate a server error when fetching the README
127-
server.get('/api/v1/crates/:name/:version/readme', {}, 500);
128-
});
115+
// Simulate a server error when fetching the README
116+
msw.worker.use(http.get('/api/v1/crates/:name/:version/readme', () => HttpResponse.html('', { status: 500 })));
129117

130118
await page.goto('/crates/serde');
131119
await expect(page.locator('[data-test-readme-error]')).toBeVisible();
132120
await expect(page.locator('[data-test-retry-button]')).toBeVisible();
133121

134-
await page.evaluate(() => {
135-
// Simulate a successful response when fetching the README
136-
server.get('/api/v1/crates/:name/:version/readme', {});
137-
});
122+
await msw.worker.resetHandlers();
138123

139124
await page.click('[data-test-retry-button]');
140-
await expect(page.locator('[data-test-readme]')).toHaveText('{}');
125+
await expect(page.locator('[data-test-readme]')).toHaveText('foo');
141126
});
142127
});

0 commit comments

Comments
 (0)