feat(mobile): show page back by url search (#9100)

close AF-1911
This commit is contained in:
CatsJuice
2024-12-12 07:14:05 +00:00
parent 84df2a1d16
commit 5dd2dddd74
8 changed files with 75 additions and 15 deletions
@@ -0,0 +1,35 @@
import { test } from '@affine-test/kit/mobile';
import { expect, type Page } from '@playwright/test';
import { expandCollapsibleSection, openTab } from './utils';
const locateBack = (page: Page) => page.getByTestId('page-header-back');
test('new doc via app tab should not show back', async ({ page }) => {
// directly open new doc, should not show back
await openTab(page, 'New Page');
await expect(locateBack(page)).not.toBeVisible();
const docId = await page.evaluate(() => location.pathname.split('/').pop());
// back to home, and open the doc, should show back
await openTab(page, 'home');
await expandCollapsibleSection(page, 'recent');
const docCard = page.locator(
`[data-testid="doc-card"][data-doc-id="${docId}"]`
);
await docCard.click();
await expect(locateBack(page)).toBeVisible();
});
// TODO(@CatsJuice): mobile @ menu is not ready
// test('jump to linked doc should show back', async ({ page }) => {
// await openTab(page, 'New Page');
// await expect(locateBack(page)).not.toBeVisible();
// const docId = await page.evaluate(() => location.pathname.split('/').pop());
// await page.keyboard.type('Test Doc');
// await page.keyboard.press('Enter');
// await page.waitForTimeout(100);
// await createLinkedPage(page, 'Test Linked Doc');
// await expect(locateBack(page)).toBeVisible();
// });
+12
View File
@@ -41,3 +41,15 @@ export async function openExplorerNodeMenu(page: Page, node: Locator) {
await expect(menu).toBeVisible();
return menu;
}
export async function openTab(
page: Page,
name: 'home' | 'all' | 'Journal' | 'New Page'
) {
const tab = page.locator('#app-tabs').getByRole('tab', { name });
await expect(tab).toBeVisible();
await tab.click();
// eslint-disable-next-line unicorn/prefer-dom-node-dataset
const isActive = await tab.getAttribute('data-active');
expect(isActive).toBe('true');
}