Skip to content
This repository has been archived by the owner on Jun 21, 2023. It is now read-only.

Commit

Permalink
Ensure correct browser env is used (vercel#26014)
Browse files Browse the repository at this point in the history
* Ensure correct browser env is used

* Fix production suite in webpack 4 mode

* fix page count on webpack 4
  • Loading branch information
ijjk committed Jun 11, 2021
1 parent 0e07a97 commit 0b3754a
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 62 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build_test_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ jobs:
needs: build
env:
HEADLESS: true
BROWSERNAME: 'firefox'
BROWSER_NAME: 'firefox'
NEXT_TELEMETRY_DISABLED: 1
steps:
- uses: actions/cache@v2
Expand All @@ -201,7 +201,7 @@ jobs:
needs: build
env:
BROWSERSTACK: true
BROWSERNAME: 'safari'
BROWSER_NAME: 'safari'
NEXT_TELEMETRY_DISABLED: 1
SKIP_LOCAL_SELENIUM_SERVER: true
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
Expand All @@ -223,7 +223,7 @@ jobs:
env:
BROWSERSTACK: true
LEGACY_SAFARI: true
BROWSERNAME: 'safari'
BROWSER_NAME: 'safari'
NEXT_TELEMETRY_DISABLED: 1
SKIP_LOCAL_SELENIUM_SERVER: true
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
Expand Down
140 changes: 81 additions & 59 deletions test/integration/production/test/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ const context = {}
describe('Production Usage', () => {
let output = ''
beforeAll(async () => {
if (process.env.NEXT_PRIVATE_TEST_WEBPACK4_MODE) {
await fs.rename(
join(appDir, 'pages/static-image.js'),
join(appDir, 'pages/static-image.js.bak')
)
}

const result = await runNextCommand(['build', appDir], {
stderr: true,
stdout: true,
Expand All @@ -60,31 +67,44 @@ describe('Production Usage', () => {
server = await startApp(app)
context.appPort = appPort = server.address().port
})
afterAll(() => stopApp(server))
afterAll(async () => {
if (process.env.NEXT_PRIVATE_TEST_WEBPACK4_MODE) {
await fs.rename(
join(appDir, 'pages/static-image.js.bak'),
join(appDir, 'pages/static-image.js')
)
}
await stopApp(server)
})

it('should contain generated page count in output', async () => {
expect(output).toContain('Generating static pages (0/38)')
expect(output).toContain('Generating static pages (38/38)')
const pageCount = process.env.NEXT_PRIVATE_TEST_WEBPACK4_MODE ? 37 : 38
expect(output).toContain(`Generating static pages (0/${pageCount})`)
expect(output).toContain(
`Generating static pages (${pageCount}/${pageCount})`
)
// we should only have 4 segments and the initial message logged out
expect(output.match(/Generating static pages/g).length).toBe(5)
})

it('should not contain currentScript usage for publicPath', async () => {
const globResult = await glob('webpack-*.js', {
cwd: join(appDir, '.next/static/chunks'),
})
if (!process.env.NEXT_PRIVATE_TEST_WEBPACK4_MODE) {
it('should not contain currentScript usage for publicPath', async () => {
const globResult = await glob('webpack-*.js', {
cwd: join(appDir, '.next/static/chunks'),
})

if (!globResult || globResult.length !== 1) {
throw new Error('could not find webpack-hash.js chunk')
}
if (!globResult || globResult.length !== 1) {
throw new Error('could not find webpack-hash.js chunk')
}

const content = await fs.readFile(
join(appDir, '.next/static/chunks', globResult[0]),
'utf8'
)
const content = await fs.readFile(
join(appDir, '.next/static/chunks', globResult[0]),
'utf8'
)

expect(content).not.toContain('.currentScript')
})
expect(content).not.toContain('.currentScript')
})
}

describe('With basic usage', () => {
it('should render the page', async () => {
Expand Down Expand Up @@ -917,54 +937,56 @@ describe('Production Usage', () => {
expect(await browser.eval('window.location.pathname')).toBe('/non-existent')
})

it('should remove placeholder for next/image correctly', async () => {
const browser = await webdriver(context.appPort, '/')

await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/static-image')
})()`)
await browser.waitForElementByCss('#static-image')

expect(await browser.eval('window.beforeNav')).toBe(1)
if (!process.env.NEXT_PRIVATE_TEST_WEBPACK4_MODE) {
it('should remove placeholder for next/image correctly', async () => {
const browser = await webdriver(context.appPort, '/')

await check(
() => browser.elementByCss('img').getComputedCss('background-image'),
'none'
)
await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/static-image')
})()`)
await browser.waitForElementByCss('#static-image')

await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/')
})()`)
await browser.waitForElementByCss('.index-page')
await waitFor(1000)
expect(await browser.eval('window.beforeNav')).toBe(1)

await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/static-image')
})()`)
await browser.waitForElementByCss('#static-image')

expect(await browser.eval('window.beforeNav')).toBe(1)
await check(
() => browser.elementByCss('img').getComputedCss('background-image'),
'none'
)

await check(
() =>
browser
.elementByCss('#static-image')
.getComputedCss('background-image'),
'none'
)
await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/')
})()`)
await browser.waitForElementByCss('.index-page')
await waitFor(1000)

await browser.eval(`(function() {
window.beforeNav = 1
window.next.router.push('/static-image')
})()`)
await browser.waitForElementByCss('#static-image')

expect(await browser.eval('window.beforeNav')).toBe(1)

await check(
() =>
browser
.elementByCss('#static-image')
.getComputedCss('background-image'),
'none'
)

for (let i = 0; i < 5; i++) {
expect(
await browser
.elementByCss('#static-image')
.getComputedCss('background-image')
).toBe('none')
await waitFor(500)
}
})
for (let i = 0; i < 5; i++) {
expect(
await browser
.elementByCss('#static-image')
.getComputedCss('background-image')
).toBe('none')
await waitFor(500)
}
})
}

dynamicImportTests(context, (p, q) => renderViaHTTP(context.appPort, p, q))

Expand Down

0 comments on commit 0b3754a

Please sign in to comment.