import { expect, test } from '../fixtures' test('opens account management after hydration without inheriting real OAuth configuration', async ({ page, }) => { await page.goto('/deck') await expect( page.getByRole('button', { name: 'Rename', includeHidden: true }), ).toBeEnabled() const manage = page.getByRole('button', { name: 'Manage connected accounts' }) if (!(await manage.isVisible())) { await page.getByRole('button', { name: 'Toggle sidebar' }).click() } await expect(manage).toBeEnabled() await manage.click() const dialog = page.getByRole('dialog', { name: 'Connected accounts' }) await expect(dialog).toBeVisible() await expect( dialog.getByText('No Mastodon servers have been configured yet.'), ).toBeVisible() await expect( dialog.getByRole('button', { name: 'Authorize with Mastodon' }), ).toHaveCount(0) await page.keyboard.press('Escape') await expect(dialog).toHaveCount(0) await expect(manage).toBeFocused() }) test('opens account management from the inbox footer and restores focus on close', async ({ page, a11y, }) => { await page.goto('/inbox') await page.waitForLoadState('networkidle') const manage = page.getByRole('button', { name: 'Manage connected accounts' }) await expect(manage).toBeVisible() await manage.click() const dialog = page.getByRole('dialog', { name: 'Connected accounts' }) await expect(dialog).toBeVisible() await expect( dialog.getByText('No Mastodon servers have been configured yet.'), ).toBeVisible() expect((await a11y().analyze()).violations).toEqual([]) await page.keyboard.press('Escape') await expect(dialog).toHaveCount(0) await expect(manage).toBeFocused() await expect( page.getByRole('textbox', { name: 'Search articles' }), ).toBeVisible() }) test('rejects an unbound OAuth callback without contacting an instance', async ({ page, }) => { await page.goto('/oauth/mastodon/callback?state=invalid&code=not-a-real-code') await expect(page).toHaveURL(/\/deck\?mastodon=failed$/) await expect(page.getByRole('alert')).toContainText( 'Could not complete Mastodon authorization.', ) await expect( page.getByRole('button', { name: 'Rename', includeHidden: true }), ).toBeEnabled() const manage = page.getByRole('button', { name: 'Manage connected accounts' }) if (!(await manage.isVisible())) { await page.getByRole('button', { name: 'Toggle sidebar' }).click() } await expect( page.getByRole('button', { name: 'Manage connected accounts' }), ).toBeEnabled() })