mirror of
https://github.com/jupyter/notebook.git
synced 2024-11-21 01:11:21 +08:00
102 lines
2.6 KiB
TypeScript
102 lines
2.6 KiB
TypeScript
import { expect } from '@playwright/test';
|
|
|
|
import { test } from './fixtures';
|
|
|
|
import { runAndAdvance } from './utils';
|
|
|
|
test.use({ autoGoto: false });
|
|
|
|
test.describe('Smoke', () => {
|
|
test('Tour', async ({ page, tmpPath }) => {
|
|
// Open the tree page
|
|
await page.goto(`tree/${tmpPath}`);
|
|
await page.click('text="Running"');
|
|
await page.click('text="Files"');
|
|
|
|
// Create a new console
|
|
await page.menu.clickMenuItem('New>Console');
|
|
// Choose the kernel
|
|
const [console] = await Promise.all([
|
|
page.waitForEvent('popup'),
|
|
page.click('text="Select"')
|
|
]);
|
|
await console.waitForLoadState();
|
|
await console.waitForSelector('.jp-CodeConsole');
|
|
|
|
// Create a new notebook
|
|
const [notebook] = await Promise.all([
|
|
page.waitForEvent('popup'),
|
|
page.click('text="New"'),
|
|
page.click('text="Notebook"')
|
|
]);
|
|
|
|
try {
|
|
// we may have to select the kernel first
|
|
await notebook.click('text="Select"', { timeout: 5000 });
|
|
} catch (e) {
|
|
// The kernel is already selected
|
|
}
|
|
|
|
// Enter code in the first cell
|
|
await notebook.locator(
|
|
'.jp-Cell-inputArea >> .cm-editor >> .cm-content[contenteditable="true"]'
|
|
).type(`import math
|
|
|
|
math.pi`);
|
|
|
|
// Run the cell
|
|
runAndAdvance(notebook);
|
|
|
|
// Enter code in the next cell
|
|
await notebook
|
|
.locator(
|
|
'.jp-Cell-inputArea >> .cm-editor >> .cm-content[contenteditable="true"]'
|
|
)
|
|
.nth(1)
|
|
.type(`import this`);
|
|
|
|
// Run the cell
|
|
runAndAdvance(notebook);
|
|
|
|
// Save the notebook
|
|
// TODO: re-enable after fixing the name on save dialog?
|
|
// await notebook.click('//span/*[local-name()="svg"]');
|
|
|
|
// Click on the Jupyter logo to open the tree page
|
|
const [tree2] = await Promise.all([
|
|
notebook.waitForEvent('popup'),
|
|
notebook.click(
|
|
'//*[local-name()="svg" and normalize-space(.)=\'Jupyter\']'
|
|
)
|
|
]);
|
|
|
|
// Shut down the kernels
|
|
await tree2.click('text="Running"');
|
|
await tree2.click('#main-panel button :text("Shut Down All")');
|
|
await tree2.press('.jp-Dialog', 'Enter');
|
|
|
|
// Close the pages
|
|
await tree2.close();
|
|
await notebook.close();
|
|
await console.close();
|
|
await page.close();
|
|
|
|
expect(true).toBe(true);
|
|
});
|
|
|
|
test('JupyterLab', async ({ page, tmpPath }) => {
|
|
// Open the tree page
|
|
await page.goto(`tree/${tmpPath}`);
|
|
|
|
// Open JupyterLab
|
|
const [lab] = await Promise.all([
|
|
page.waitForEvent('popup'),
|
|
page.menu.clickMenuItem('View>Open JupyterLab')
|
|
]);
|
|
await lab.waitForSelector('.jp-Launcher');
|
|
await lab.close();
|
|
|
|
expect(true).toBe(true);
|
|
});
|
|
});
|