mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-15 05:37:32 +00:00
feat: ctrl click to open embeded doc in new tab (#8401)
fix AF-1176 depends on https://github.com/toeverything/blocksuite/pull/8478
This commit is contained in:
@@ -83,3 +83,66 @@ test('mid click all page and open in new tab', async ({ page }) => {
|
||||
timeout: 15000,
|
||||
});
|
||||
});
|
||||
|
||||
test('ctrl click embedded doc link and open in new tab', async ({ page }) => {
|
||||
await openHomePage(page);
|
||||
await clickNewPageButton(page);
|
||||
|
||||
await getBlockSuiteEditorTitle(page).click();
|
||||
await getBlockSuiteEditorTitle(page).fill('this is a new page');
|
||||
const newPageUrl = page.url();
|
||||
|
||||
await clickNewPageButton(page);
|
||||
await page.keyboard.press('Enter'); // goto main content
|
||||
|
||||
// paste new page url to create linked page
|
||||
await page.evaluate(
|
||||
async ([url]) => {
|
||||
const clipData = {
|
||||
'text/plain': url,
|
||||
};
|
||||
const e = new ClipboardEvent('paste', {
|
||||
clipboardData: new DataTransfer(),
|
||||
});
|
||||
Object.defineProperty(e, 'target', {
|
||||
writable: false,
|
||||
value: document,
|
||||
});
|
||||
Object.entries(clipData).forEach(([key, value]) => {
|
||||
e.clipboardData?.setData(key, value);
|
||||
});
|
||||
document.dispatchEvent(e);
|
||||
},
|
||||
[newPageUrl]
|
||||
);
|
||||
|
||||
const referenceNode = page.locator(
|
||||
'affine-reference:has-text("this is a new page")'
|
||||
);
|
||||
|
||||
// hover on the reference node and change it to embedded card mode
|
||||
await referenceNode.hover();
|
||||
|
||||
const referencePopup = page.locator(
|
||||
'reference-popup .affine-reference-popover-container'
|
||||
);
|
||||
|
||||
await expect(referencePopup).toBeVisible();
|
||||
await referencePopup.getByRole('button', { name: 'Switch view' }).click();
|
||||
await page.getByRole('button', { name: 'Card view' }).click();
|
||||
|
||||
const embededDocBlock = page.locator('affine-embed-linked-doc-block');
|
||||
|
||||
await expect(embededDocBlock).toBeVisible();
|
||||
|
||||
// open in new tab
|
||||
const [newTabPage] = await Promise.all([
|
||||
page.waitForEvent('popup'),
|
||||
embededDocBlock.click({
|
||||
button: 'left',
|
||||
modifiers: ['ControlOrMeta'],
|
||||
}),
|
||||
]);
|
||||
|
||||
await expect(newTabPage).toHaveURL(newPageUrl, { timeout: 15000 });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user