| | |
| |
|
| | import { nextTestSetup } from 'e2e-utils' |
| | import { retry } from 'next-test-utils' |
| |
|
| | const installCheckVisible = (browser) => { |
| | return browser.eval(`(function() { |
| | window.checkInterval = setInterval(function() { |
| | const root = document.querySelector('nextjs-portal').shadowRoot; |
| | const statusElement = root.querySelector('[data-indicator-status]') |
| | const badge = root.querySelector('[data-next-badge]') |
| | const status = badge ? badge.getAttribute('data-status') : null |
| | |
| | // Check if we're showing any status (rendering, compiling, etc.) |
| | window.showedBuilder = window.showedBuilder || ( |
| | statusElement !== null || (status && status !== 'none') |
| | ) |
| | if (window.showedBuilder) clearInterval(window.checkInterval) |
| | }, 5) |
| | })()`) |
| | } |
| |
|
| | describe('Dev Rendering Indicator', () => { |
| | const { next } = nextTestSetup({ |
| | files: __dirname, |
| | }) |
| |
|
| | it('Shows build indicator when page is built from modifying', async () => { |
| | |
| | await Promise.all([ |
| | next.fetch('/app/rendering/a'), |
| | next.fetch('/app/rendering/b'), |
| | ]) |
| | const browser = await next.browser('/app/rendering/a') |
| | await installCheckVisible(browser) |
| | await browser.eval('window.showedBuilder = false') |
| |
|
| | await browser.elementByCss('[href="/app/rendering/b"]').click() |
| | await retry(async () => { |
| | await browser.elementByCss('[href="/app/rendering/a"]') |
| | }) |
| |
|
| | const showedRenderingIndicator = await browser.eval('window.showedBuilder') |
| | expect({ showedRenderingIndicator }).toEqual({ |
| | showedRenderingIndicator: true, |
| | }) |
| | }) |
| | }) |
| |
|