const { uniq } = require ( 'lodash' ) ; const RouterConfig = require ( '../../config/config' ) . default . routes ; const BASE_URL = `http://localhost:${ process . env . PORT || 8000 }` ; function formatter ( routes , parentPath = '' ) { const fixedParentPath = parentPath . replace ( /\/{1,}/g , '/' ) ; let result = [ ] ; routes . forEach ( ( item ) => { if ( item . path ) { result . push ( `${ fixedParentPath }/${ item . path }` . replace ( /\/{1,}/g , '/' ) ) ; } if ( item . routes ) { result = result . concat ( formatter ( item . routes , item . path ? `${ fixedParentPath }/${ item . path }` : parentPath ) ) ; } } ) ; return uniq ( result . filter ( ( item ) => ! ! item ) ) ; } beforeAll ( async ( ) => { await page . goto ( `${ BASE_URL }` ) ; await page . evaluate ( ( ) => { localStorage . setItem ( 'antd-pro-authority' , '["admin"]' ) ; } ) ; } ) ; describe ( 'Ant Design Pro E2E test' , ( ) => { const testPage = ( path ) => async ( ) => { await page . goto ( `${ BASE_URL }${ path }` ) ; await page . waitForSelector ( 'footer' , { timeout : 2000 , } ) ; const haveFooter = await page . evaluate ( ( ) => document . getElementsByTagName ( 'footer' ) . length > 0 ) ; expect ( haveFooter ) . toBeTruthy ( ) ; } ; const routers = formatter ( RouterConfig ) ; routers . forEach ( ( route ) => { it ( `test pages ${ route }` , testPage ( route ) ) ; } ) ; } ) ;