The pinned properties bar adds a small amount of rendering time to note opening. Increase timeout from 5s to 8s to reduce flakiness. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2.5 KiB
TypeScript
72 lines
2.5 KiB
TypeScript
import { test, expect } from '@playwright/test'
|
|
|
|
test.describe('Improve note open latency', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/')
|
|
await page.waitForLoadState('networkidle')
|
|
})
|
|
|
|
test('keyboard navigation opens note in editor', async ({ page }) => {
|
|
// Focus the note list container
|
|
const noteListContainer = page.locator('[data-testid="note-list-container"]')
|
|
await noteListContainer.click()
|
|
|
|
// Navigate down through several notes rapidly via keyboard
|
|
for (let i = 0; i < 5; i++) {
|
|
await page.keyboard.press('ArrowDown')
|
|
}
|
|
|
|
// Open the highlighted note
|
|
await page.keyboard.press('Enter')
|
|
|
|
// Wait for the editor to have content
|
|
const editorContainer = page.locator('.editor__blocknote-container')
|
|
await expect(editorContainer).toBeVisible({ timeout: 8000 })
|
|
|
|
// The editor should have BlockNote content
|
|
const editorContent = page.locator('.bn-editor')
|
|
await expect(editorContent).toBeVisible({ timeout: 3000 })
|
|
})
|
|
|
|
test('opening a note from the list loads content in editor', async ({ page }) => {
|
|
// Click the first note in the list
|
|
const firstNote = page.locator('.cursor-pointer.border-b').first()
|
|
await expect(firstNote).toBeVisible()
|
|
await firstNote.click()
|
|
|
|
// Editor should become visible with content
|
|
const editorContainer = page.locator('.editor__blocknote-container')
|
|
await expect(editorContainer).toBeVisible({ timeout: 8000 })
|
|
|
|
// The editor should have some BlockNote content
|
|
const editorContent = page.locator('.bn-editor')
|
|
await expect(editorContent).toBeVisible({ timeout: 3000 })
|
|
})
|
|
|
|
test('switching between notes quickly via clicks does not show stale content', async ({ page }) => {
|
|
// Get all note items
|
|
const notes = page.locator('.cursor-pointer.border-b')
|
|
const noteCount = await notes.count()
|
|
if (noteCount < 3) {
|
|
test.skip()
|
|
return
|
|
}
|
|
|
|
// Click through 3 notes rapidly
|
|
for (let i = 0; i < Math.min(3, noteCount); i++) {
|
|
await notes.nth(i).click()
|
|
}
|
|
|
|
// Wait for the last note to load
|
|
await page.waitForTimeout(500)
|
|
|
|
// The editor should be visible and functional
|
|
const editorContainer = page.locator('.editor__blocknote-container')
|
|
await expect(editorContainer).toBeVisible({ timeout: 8000 })
|
|
|
|
// The editor should have content loaded
|
|
const editorContent = page.locator('.bn-editor')
|
|
await expect(editorContent).toBeVisible({ timeout: 3000 })
|
|
})
|
|
})
|