Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
199 changes: 199 additions & 0 deletions tests/e2e-playwright/specs/spaces/createSpaceFromSelection.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
import { test } from '@playwright/test'
import { config } from './../../../e2e/config.js'
import {
ActorsEnvironment,
UsersEnvironment,
FilesEnvironment,
SpacesEnvironment
} from '../../../e2e/support/environment'
import { setAccessAndRefreshToken } from '../../helpers/setAccessAndRefreshToken'
import * as ui from '../../steps/ui/index'
import * as api from '../../steps/api/api'

test.describe('create Space shortcut', () => {
let actorsEnvironment: ActorsEnvironment
const usersEnvironment = new UsersEnvironment()
const filesEnvironment = new FilesEnvironment()
const spacesEnvironment = new SpacesEnvironment()

test.beforeEach(async ({ browser }) => {
actorsEnvironment = new ActorsEnvironment({
context: {
acceptDownloads: config.acceptDownloads,
reportDir: config.reportDir,
tracingReportDir: config.tracingReportDir,
reportHar: config.reportHar,
reportTracing: config.reportTracing,
reportVideo: config.reportVideo,
failOnUncaughtConsoleError: config.failOnUncaughtConsoleError
},
browser: browser
})

await setAccessAndRefreshToken(usersEnvironment)

// Given "Admin" creates following users using API
// | id |
// | Alice |
await api.userHasBeenCreated({ usersEnvironment, stepUser: 'Admin', userToBeCreated: 'Alice' })
// And "Admin" assigns following roles to the users using API
// | id | role |
// | Alice | Space Admin |
await api.userHasAssignRolesToUsers({
usersEnvironment,
stepUser: 'Admin',
targetUserId: 'Alice',
role: 'Space Admin'
})
// And "Alice" logs in
await ui.logInUser({ usersEnvironment, actorsEnvironment, stepUser: 'Alice' })
})

test.afterEach(async () => {
// And "Alice" logs out
await ui.logOutUser({ actorsEnvironment, stepUser: 'Alice' })
await api.deleteUser({ usersEnvironment, stepUser: 'Admin', targetUser: 'Alice' })
})

test('create Space from folder', async () => {
// And "Alice" creates the following folder in personal space using API
// | name |
// | spaceFolder |
// | spaceFolder/test |
await api.userHasCreatedFolders({
usersEnvironment,
stepUser: 'Alice',
folderNames: ['spaceFolder', 'spaceFolder/test']
})

// And "Alice" navigates to the personal space page
await ui.navigateToPersonalSpacePage({ actorsEnvironment, stepUser: 'Alice' })

// And "Alice" uploads the following resources
// | resource | to |
// | data.zip | spaceFolder |
// | lorem.txt | spaceFolder |
await ui.uploadResource({
actorsEnvironment,
filesEnvironment,
stepUser: 'Alice',
resource: 'data.zip',
to: 'spaceFolder'
})
await ui.uploadResource({
actorsEnvironment,
filesEnvironment,
stepUser: 'Alice',
resource: 'lorem.zip',
to: 'spaceFolder'
})

// And "Alice" navigates to the personal space page
await ui.navigateToPersonalSpacePage({ actorsEnvironment, stepUser: 'Alice' })

// And "Alice" creates space "folderSpace" from folder "spaceFolder" using the context menu
await ui.userCreatesSpaceFromFolderUsingContexMenu({
actorsEnvironment,
spacesEnvironment,
stepUser: 'Alice',
spaceName: 'folderSpace',
folderName: 'spaceFolder'
})

// And "Alice" navigates to the project space "folderSpace"
await ui.navigateToSpace({ actorsEnvironment, stepUser: 'Alice', space: 'folderSpace' })

// Then following resources should be displayed in the files list for user "Alice"
// | resource |
// | data.zip |
// | lorem.txt |
expect(
await ui.resourceExists({
actorsEnvironment,
listType: 'files list',
stepUser: 'Alice',
resource: 'data.zip'
})
).toBe(true)
expect(
await ui.resourceExists({
actorsEnvironment,
listType: 'files list',
stepUser: 'Alice',
resource: 'lorem.txt'
})
).toBe(true)
})

test('create space from resources', async () => {
// And "Alice" creates the following folder in personal space using API
// | name |
// | resourceFolder |
await api.userHasCreatedFolder({
usersEnvironment,
stepUser: 'Alice',
folderName: 'resourceFolder'
})

// And "Alice" navigates to the personal space page
await ui.navigateToPersonalSpacePage({ actorsEnvironment, stepUser: 'Alice' })

// And "Alice" uploads the following resources
// | resource | to |
// | data.zip | resourceFolder |
// | lorem.txt | spaceFolder |
await ui.uploadResource({
actorsEnvironment,
filesEnvironment,
stepUser: 'Alice',
resource: 'data.zip',
to: 'spaceFolder'
})
await ui.uploadResource({
actorsEnvironment,
filesEnvironment,
stepUser: 'Alice',
resource: 'lorem.zip',
to: ''
})

// And "Alice" navigates to the personal space page
await ui.navigateToPersonalSpacePage({ actorsEnvironment, stepUser: 'Alice' })

// And "Alice" creates space "resourceSpace" from resources using the context menu
// | resource |
// | resourceFolder |
// | lorem.txt |
await ui.userCreatesSpaceFromResourcesUsingContexMenu({
actorsEnvironment,
spacesEnvironment,
stepUser: 'Alice',
spaceName: 'resourceSpace',
resources: ['resourceFolder', 'lorem.txt']
})

// And "Alice" navigates to the project space "resourceSpace"
await ui.navigateToSpace({ actorsEnvironment, stepUser: 'Alice', space: 'resourceSpace' })

// Then following resources should be displayed in the files list for user "Alice"
// | resource |
// | resourceFolder |
// | lorem.txt |
expect(
await ui.resourceExists({
actorsEnvironment,
listType: 'files list',
stepUser: 'Alice',
resource: 'resourceFolder'
})
).toBe(true)
expect(
await ui.resourceExists({
actorsEnvironment,
listType: 'files list',
stepUser: 'Alice',
resource: 'lorem.txt'
})
).toBe(true)
})
})
53 changes: 52 additions & 1 deletion tests/e2e-playwright/steps/ui/resources.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { expect } from '@playwright/test'
import { objects } from '../../../e2e/support'
import { ActorsEnvironment, FilesEnvironment } from '../../../e2e/support/environment'
import {
ActorsEnvironment,
FilesEnvironment,
SpacesEnvironment
} from '../../../e2e/support/environment'
import {
createResourceTypes,
displayedResourceType,
Expand Down Expand Up @@ -276,3 +280,50 @@ export async function getFilesList({
const resourceObject = new objects.applicationFiles.Resource({ page })
return await resourceObject.getAllFiles()
}

export async function userCreatesSpaceFromFolderUsingContexMenu({
actorsEnvironment,
spacesEnvironment,
stepUser,
spaceName,
folderName
}: {
actorsEnvironment: ActorsEnvironment
spacesEnvironment: SpacesEnvironment
stepUser: string
spaceName: string
folderName: string
}): Promise<void> {
const { page } = actorsEnvironment.getActor({ key: stepUser })
const resourceObject = new objects.applicationFiles.Resource({ page })
const space = await resourceObject.createSpaceFromFolder({
folderName: folderName,
spaceName: spaceName
})
spacesEnvironment.createSpace({
key: space.name,
space: { name: space.name, id: space.id }
})
}

export async function userCreatesSpaceFromResourcesUsingContexMenu({
actorsEnvironment,
spacesEnvironment,
stepUser,
spaceName,
resources
}: {
actorsEnvironment: ActorsEnvironment
spacesEnvironment: SpacesEnvironment
stepUser: string
spaceName: string
resources: string[]
}): Promise<void> {
const { page } = actorsEnvironment.getActor({ key: stepUser })
const resourceObject = new objects.applicationFiles.Resource({ page })
const space = await resourceObject.createSpaceFromSelection({ resources, spaceName })
spacesEnvironment.createSpace({
key: space.name,
space: { name: space.name, id: space.id }
})
}

This file was deleted.

21 changes: 20 additions & 1 deletion tests/e2e/support/objects/app-files/resource/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,17 @@ export const createSpaceFromFolder = async ({
spaceName: string
}): Promise<Space> => {
await page.locator(util.format(resourceNameSelector, folderName)).click({ button: 'right' })
await objects.a11y.Accessibility.assertNoSevereA11yViolations(
page,
['tippyBox'],
'contex menu tippy box'
)
await page.locator(createSpaceFromResourceAction).click()
await objects.a11y.Accessibility.assertNoSevereA11yViolations(
page,
['ocModal'],
'create space from folder modal'
)
await page.locator(resourceNameInput).fill(spaceName)
const [response] = await Promise.all([
page.waitForResponse(
Expand Down Expand Up @@ -299,8 +309,17 @@ export const createSpaceFromSelection = async ({
select: true
})
await page.locator(util.format(resourceNameSelector, resources[0])).click({ button: 'right' })

await objects.a11y.Accessibility.assertNoSevereA11yViolations(
page,
['tippyBox'],
'contex menu tippy box'
)
await page.locator(createSpaceFromResourceAction).click()
await objects.a11y.Accessibility.assertNoSevereA11yViolations(
page,
['ocModal'],
'create space from folder modal'
)
await page.locator(resourceNameInput).fill(spaceName)
const [response] = await Promise.all([
page.waitForResponse(
Expand Down