mirror of
https://github.com/enso-org/enso.git
synced 2024-12-22 18:38:11 +03:00
83ec24da59
- PARTIALLY implements https://github.com/enso-org/cloud-v2/issues/1232 - Partially refactor E2E test actions into a state machine. - The main goal of this is to _disallow_ invalid actions - for example going from a page to itself, which will fail at runtime, or trying to create a new Data Link on a page where that button is not accessible. - An auxiliary goal is to have better namespacing of actions and better clarity: - Previously, everything was a locator at the top level of a single module. This makes it very difficult to comprehend what kinds of actions are available. - Note: There is also older `namespace`-based namespacing for the User and Organization settings pages, which were added before this refactor. They SHOULD be refactored to the new API, but I'm not sure whether it's worth spending the time right now. - Add E2E tests for every input on the "user" settings page and the "organization" settings page. - A skeletal E2E test for the Datalink modal has also been added - it does not actually test anything currently but should be sufficient for building upon. # Important Notes None
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
/** @file Test the drive view. */
|
|
import * as test from '@playwright/test'
|
|
|
|
import * as actions from './actions'
|
|
|
|
test.test('drive view', ({ page }) =>
|
|
actions.mockAllAndLogin({ page }).then(
|
|
async ({ pageActions }) =>
|
|
await pageActions
|
|
.withDriveView(async view => {
|
|
await test.expect(view).toBeVisible()
|
|
})
|
|
.driveTable.expectPlaceholderRow()
|
|
.newEmptyProject()
|
|
.do(async () => {
|
|
await test.expect(actions.locateEditor(page)).toBeVisible()
|
|
})
|
|
.goToPage.drive()
|
|
.driveTable.withRows(async rows => {
|
|
await test.expect(rows).toHaveCount(1)
|
|
})
|
|
.do(async () => {
|
|
await test.expect(actions.locateAssetsTable(page)).toBeVisible()
|
|
})
|
|
.newEmptyProject()
|
|
.do(async () => {
|
|
await test.expect(actions.locateEditor(page)).toBeVisible()
|
|
})
|
|
.goToPage.drive()
|
|
.driveTable.withRows(async rows => {
|
|
await test.expect(rows).toHaveCount(2)
|
|
})
|
|
// The last opened project needs to be stopped, to remove the toast notification notifying the
|
|
// user that project creation may take a while. Previously opened projects are stopped when the
|
|
// new project is created.
|
|
.driveTable.withRows(async rows => {
|
|
await actions.locateStopProjectButton(rows.nth(0)).click()
|
|
})
|
|
// Project context menu
|
|
.driveTable.rightClickRow(0)
|
|
.withContextMenus(async menus => {
|
|
// actions.locateContextMenus(page)
|
|
await test.expect(menus).toBeVisible()
|
|
})
|
|
.contextMenu.moveToTrash()
|
|
.driveTable.withRows(async rows => {
|
|
await test.expect(rows).toHaveCount(1)
|
|
})
|
|
)
|
|
)
|