Skip to content
This repository has been archived by the owner on Sep 2, 2021. It is now read-only.

From galata using playwright to playwright with galata #67

Closed
fcollonval opened this issue Jun 24, 2021 · 5 comments · Fixed by jupyterlab/jupyterlab#10796
Closed

From galata using playwright to playwright with galata #67

fcollonval opened this issue Jun 24, 2021 · 5 comments · Fixed by jupyterlab/jupyterlab#10796
Labels
enhancement New feature or request question Further information is requested

Comments

@fcollonval
Copy link
Member

Problem

playwright is an amazing tool with a strong support from Microsoft and the community. So we can only expect it to grow in reliability and ease of usage. In particular with v1.12 a test runner was released with the builtin ability to compare image, generate trace, create videos, running tests in parallel, fixtures, reporters,... . I think we should onboard that as there is no value for us to try keeping up the pace by hiding the tool.

Proposed Solution

  • Embrace playwright test runner
    • Port current report generator to be a valid playwright reporter
    • Unlock the ability to create test from the code generator tool by copy-paste

while keeping the nice helpers functions.

@fcollonval fcollonval added enhancement New feature or request question Further information is requested labels Jun 24, 2021
@welcome
Copy link

welcome bot commented Jun 24, 2021

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! 🤗

If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively.
welcome
You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! 👋

Welcome to the Jupyter community! 🎉

@jtpio
Copy link
Member

jtpio commented Jun 24, 2021

Thanks @fcollonval for opening this.

Embrace playwright test runner

Historically and for more context, Galata switched from using puppeteer to playwright in #11. The diff was relatively small since both frameworks have almost the same API.

If we decide to go full playwright from now on, then I think it would indeed make sense to embrace more of the existing tooling 👍

@mbektas
Copy link
Member

mbektas commented Jun 24, 2021

Sure, this is a good idea. We currently customize test and describe methods of jest for some bookkeeping (https://github.com/jupyterlab/galata/blob/main/packages/galata/src/galata.ts#L43-L73) we will need to make sure we can do similar with playwright/test. It might even have a better way to access current test name and other test info.

@fcollonval
Copy link
Member Author

test is definitely meant to be overridden as this is the way to define fixture; doc example:

// example.spec.ts
import { test as base } from '@playwright/test';
import { TodoPage } from './todo-page';

// Extend basic test by providing a "table" fixture.
const test = base.extend<{ todoPage: TodoPage }>({
  todoPage: async ({ page }, use) => {
    const todoPage = new TodoPage(page);
    await todoPage.goto();
    await todoPage.addToDo('item1');
    await todoPage.addToDo('item2');
    await use(todoPage);
    await todoPage.removeAll();
  },
});

test('should add an item', async ({ todoPage }) => {
  await todoPage.addToDo('my item');
  // ...
});

test('should remove an item', async ({ todoPage }) => {
  await todoPage.remove('item1');
  // ...
});

@jtpio
Copy link
Member

jtpio commented Jul 6, 2021

Just switched from jest to @playwright/test when updating RetroLab in jupyterlab/retrolab#167 (retrolab has been using plain playwright and not galata, yet).

The setup and code is much simpler and feels less convoluted. Also as mentioned above fixtures would also be great to have in galata.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants