Add profiler
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
shouldCommitGesture,
|
||||
springTimeScaleForVelocity,
|
||||
} from './runtime'
|
||||
import { createNativeNavigationProfiler } from './profiler'
|
||||
|
||||
const Page = defineComponent({ template: '<div>page</div>' })
|
||||
|
||||
@@ -23,6 +24,7 @@ async function harness(blockB: boolean | 'redirect' = false) {
|
||||
{ path: '/right', component: Page, meta: { native: { siblingOrder: 2, siblingHistory: 'replace' } } },
|
||||
{ path: '/no-cache', component: Page, meta: { native: { cache: false, parent: '/a' } } },
|
||||
{ path: '/pinned', component: Page, meta: { native: { cache: 'pin', parent: '/a' } } },
|
||||
{ path: '/item/:id', component: Page, meta: { native: { parent: '/a' } } },
|
||||
],
|
||||
})
|
||||
if (blockB) router.beforeEach((to) => to.path === '/b' ? (blockB === 'redirect' ? '/modal' : false) : undefined)
|
||||
@@ -57,6 +59,28 @@ describe('gesture decisions', () => {
|
||||
})
|
||||
|
||||
describe('native router transactions', () => {
|
||||
it('exports opt-in frame diagnostics without route params or query values', async () => {
|
||||
const { native } = await harness()
|
||||
const profiler = createNativeNavigationProfiler(native, { metadata: { build: 'test' } })
|
||||
profiler.start()
|
||||
|
||||
await native.push('/item/private-id?token=secret')
|
||||
const report = profiler.stop()
|
||||
|
||||
expect(report.schema).toBe('native-vue-router-profile@1')
|
||||
expect(report.metadata).toEqual({ build: 'test' })
|
||||
expect(report.events.map((event) => event.type)).toEqual(expect.arrayContaining([
|
||||
'route-load-start',
|
||||
'route-load-end',
|
||||
'transaction-start',
|
||||
'transaction-end',
|
||||
]))
|
||||
expect(report.transactions).toMatchObject([{ route: '/item/:id', cold: true, outcome: 'committed' }])
|
||||
expect(profiler.toJSON(report)).not.toContain('private-id')
|
||||
expect(profiler.toJSON(report)).not.toContain('secret')
|
||||
profiler.dispose()
|
||||
})
|
||||
|
||||
it('preloads a target without changing URL history', async () => {
|
||||
const { router, native } = await harness()
|
||||
const id = await native.beginInteractive('push', '/b')
|
||||
|
||||
Reference in New Issue
Block a user