- Add reminders page with navigation support - Upgrade BMad builder module to skills-based architecture - Refactor MCP server: extract tools and auth into separate modules - Add connections cache, custom AI provider support - Update prisma schema and generated client - Various UI/UX improvements and i18n updates - Add service worker for PWA support Made-with: Cursor
63 lines
2.7 KiB
TypeScript
63 lines
2.7 KiB
TypeScript
|
|
import { test, expect } from '@playwright/test'
|
|
|
|
test.describe('Recent Notes Dismissal Bug', () => {
|
|
test('should not replace dismissed note immediately', async ({ page }) => {
|
|
// 1. Create 4 notes to ensure we have enough to fill the list (limit is 3) + 1 extra
|
|
await page.goto('/')
|
|
await page.waitForLoadState('networkidle')
|
|
|
|
// Create 4 notes
|
|
for (let i = 1; i <= 4; i++) {
|
|
const noteInput = page.locator('[data-testid="note-input-textarea"]')
|
|
if (await noteInput.isVisible()) {
|
|
await noteInput.fill(`Recent Note Test ${i} - ${Date.now()}`)
|
|
await page.locator('button[type="submit"]').click()
|
|
// Wait for creation
|
|
await page.waitForTimeout(500)
|
|
} else {
|
|
// If input not visible, click "New Note" or "Add Note" button first?
|
|
// Assuming input is visible or toggleable.
|
|
// Let's try to just open it if needed.
|
|
const addBtn = page.locator('button:has-text("New Note")').first()
|
|
if (await addBtn.isVisible()) {
|
|
await addBtn.click()
|
|
}
|
|
await page.locator('[data-testid="note-input-textarea"]').fill(`Recent Note Test ${i} - ${Date.now()}`)
|
|
await page.locator('button[type="submit"]').click()
|
|
await page.waitForTimeout(500)
|
|
}
|
|
}
|
|
|
|
// Refresh to update recent list
|
|
await page.reload()
|
|
await page.waitForLoadState('networkidle')
|
|
|
|
const recentSection = page.locator('[data-testid="recent-notes-section"]')
|
|
await expect(recentSection).toBeVisible()
|
|
|
|
// Should see 3 notes
|
|
const noteCards = recentSection.locator('[data-testid^="note-card-"]')
|
|
await expect(noteCards).toHaveCount(3)
|
|
|
|
// 2. Dismiss one note
|
|
const firstNote = noteCards.first()
|
|
// Hover to see the dismiss button
|
|
await firstNote.hover()
|
|
const dismissBtn = firstNote.locator('button[title*="Dismiss"], button[title*="Fermer"]') // Trying both EN and FR just in case
|
|
|
|
// We might need to force click if hover doesn't work perfectly in test
|
|
await dismissBtn.click({ force: true })
|
|
|
|
// 3. Verify behavior
|
|
// PRE-FIX: The list refreshes and shows 3 notes (the 4th one pops in)
|
|
// POST-FIX: The list should show 2 notes
|
|
|
|
// We expect 2 notes if the fix works.
|
|
// If the bug is present, this assertion might fail (it will see 3).
|
|
// For reproduction, we might want to assert failure or just see what happens.
|
|
// Let's assert the DESIRED behavior (2 notes).
|
|
await expect(noteCards).toHaveCount(2)
|
|
})
|
|
})
|