11import { expect , test } from '@/e2e/helper' ;
2- import { Response } from 'miragejs ' ;
2+ import { http , HttpResponse } from 'msw ' ;
33
44const 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
8787test . 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