File size: 4,075 Bytes
b91e262 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | import { nextTestSetup } from 'e2e-utils'
describe('react-performance-track', () => {
// false is the default when visiting pages as an ordinary user.
// true is the default when having Chrome DevTools open.
// Hardcoded for now since most of the actual behavior is not intended.
const disableCache = false
const extraHTTPHeaders = disableCache
? { 'Cache-Control': 'no-cache' }
: undefined
const { next } = nextTestSetup({
files: __dirname,
})
it('should show setTimeout', async () => {
const browser = await next.browser('/set-timeout', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{ name: '\u200bsetTimeout', properties: [] },
{ name: '\u200bsetTimeout', properties: [] },
])
)
})
it('should show fetch', async () => {
const browser = await next.browser('/fetch', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{
// React might decide to display the shorthand in round brackets differently.
// Double check with React changes if a shorthand change is intended.
// TODO: Should include short name "(…/random)" and URL
name: '\u200bfetch',
properties: expect.arrayContaining([
['status', '200'],
['url', '""'],
]),
},
])
)
})
it('should show params', async () => {
const browser = await next.browser('/params/next', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{
name: '\u200bparams [Prefetchable]',
properties: [],
},
])
)
})
it('should show searchParams', async () => {
const browser = await next.browser('/searchparams?slug=next', {
extraHTTPHeaders,
})
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{
name: '\u200bsearchParams [Prefetchable]',
properties: [],
},
])
)
})
it('should show cookies', async () => {
const browser = await next.browser('/cookies', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{
name: '\u200bcookies [Prefetchable]',
properties: [],
},
])
)
})
it('should show draftMode', async () => {
const browser = await next.browser('/draftMode', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
// TODO: Should include "draftMode [Prefetchable]".
expect(track).toEqual([])
})
it('should show headers', async () => {
const browser = await next.browser('/headers', { extraHTTPHeaders })
await browser.elementByCss('[data-react-server-requests-done]', {
state: 'attached',
})
const track = await browser.eval('window.reactServerRequests.getSnapshot()')
expect(track).toEqual(
expect.arrayContaining([
{
name: '\u200bheaders [Prefetchable]',
properties: [],
},
])
)
})
})
|