-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update project and implement select tests #7
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the update!
Code changes look good to me, I just have a few minor comments/suggestions.
However, there seems to be an issue with one of the newly added select test cases.
For me, in both the Theia and the VS Code integration the test The select feature- should allow to deselect a single element through a keybinding
fails with a timeout.
Here is the error stack from Theia testing:
Running 43 tests using 6 workers
1) [theia] › ../../tests/features/select/select.spec.ts:84:9 › The select feature › should allow to deselect a single element through a keybinding
Test timeout of 30000ms exceeded.
Error: locator.waitFor: Test ended.
Call log:
- waiting for locator('body').locator('div.sprotty').locator('[data-svg-metadata-type="graph"]').locator('svg.sprotty-graph').locator('.selected').first() to be detached
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
- locator resolved to visible <g id="workflow-diagram_0_task0" transform="transla…>…</g>
94 | await page.keyboard.press('Escape');
95 |
> 96 | await Promise.all((await graph.locate().locator(`.${Selectable.CSS}`).all()).map(l => l.waitFor({ state: 'detached' })));
| ^
97 |
98 | const after = await graph.getModelElementsBySelector(`.${Selectable.CSS}`, PModelElement);
99 | expect(after).toHaveLength(0);
at map (/home/tobias/Git/OpenSource/glsp/glsp-playwright/examples/workflow-test/tests/features/select/select.spec.ts:96:97)
at /home/tobias/Git/OpenSource/glsp/glsp-playwright/examples/workflow-test/tests/features/select/select.spec.ts:96:86
1 failed
[theia] › ../../tests/features/select/select.spec.ts:84:9 › The select feature › should allow to deselect a single element through a keybinding
- Update folder structure to be similar to glsp-client - Remove aliasing from example project - Make access more defensive - Introduce * type for models to allow for all types - Fix failing tests due to ghost elements - Update theia playwright framework
4bf67d5
to
0460a4b
Compare
Both of the tests fail because:
So, both of Theia and VSCode do not clear the selected state if the escape is clicked multiple times. If I remember correctly, that was implemented with the accessibility features. |
I see, if this behavior is part of the a11y feature we should deactivate the corresponding test for now. |
…d allow to skip tests based on running integration
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Changes look good to me and should make it easier to setup
CI workflows for UI tests in the respective GLSP components repositories.
Nice job!
Description
This PR brings some necessary changes for the future:
GLSP-Client
project structureGLSP-Playwright
more defensive (e.g., more information, checks, vscode-setup)Finally, test cases based for select are implemented.
What it does
New Features
*
type for models to allow for all typesHow to test
Please prepare the project by reading the README
The
standalone
version succeeds all the thests.Theia and VSCode fail the test:
It seems that using
Escape
does not reset theselect
state.Follow-ups
Changelog
New way of creation
GLSP-Playwright
follows a similar approach asTheia-Playwright
. However, we do not require anyloader
. That means we can create our*App
now directly.Before
Now
IntegrationArgs
as first constructor parameter