mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
* fix: release.yml * fix: S3ChannelConfigSchema type port mismatch * fix(csp): Conditionally sets UPGRADE_INSECURE_REQUESTS based on the PROJECT_URL scheme. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: adding e2e tesing for notification. * fix: updating trivy-action to the latest version, using new tagging pattern (vX.XX.XX instead of (X.XX.XX). * fix: removing browser targeting in e2e workflow as it is already specify in playwright.config.ts * fix: mapping secrets to environment variables in the end-to-end workflow. * fix: add a condition to allow end-to-end workflow execution only on main repo (fork are excluded). * fix: adding some data-testid to rely on more stable locator. * fix: adding some data-testid to rely on more stable locator. * fix: removing unusued browsers in end-to-end workflow. * fix: removing unused browsers in end-to-end workflow. * fix: removing unused browsers in end-to-end workflow. --------- Co-authored-by: charlesgauthereau <charles.gauthereau@soluce-technologies.com> Co-authored-by: killianlarcher <killian.larcher@soluce-technologies.com>
105 lines
3.8 KiB
TypeScript
105 lines
3.8 KiB
TypeScript
import {test, expect} from '@playwright/test';
|
|
import {login, register, users} from "./helpers/auth";
|
|
import {LOCAL_STORAGE_PATH} from "./helpers/session";
|
|
|
|
const TIMEOUT = undefined
|
|
// const TIMEOUT = 5000
|
|
|
|
test.use({storageState: LOCAL_STORAGE_PATH})
|
|
|
|
test.describe.serial( () => {
|
|
|
|
test('Redirect to login if not connected', async ({page}) => {
|
|
await page.goto('/dashboard/projects');
|
|
await expect(page).toHaveURL("login?redirect=%2Fdashboard%2Fprojects", {timeout: TIMEOUT});
|
|
});
|
|
|
|
test('Password too short', async ({page}) => {
|
|
await page.goto('')
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
let password = '123456'
|
|
await register(page, users["admin"].username, users["admin"].email, password, password)
|
|
|
|
const toast = page.locator('text=Must have at least 8 character')
|
|
await expect(toast).toBeVisible()
|
|
})
|
|
|
|
test('Password too simple', async ({page}) => {
|
|
await page.goto('')
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
let password = '12345678'
|
|
await register(page, users["admin"].username, users["admin"].email, password, password)
|
|
|
|
const toast = page.locator('text=Your password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.')
|
|
await expect(toast).toBeVisible()
|
|
})
|
|
|
|
test('Password and confirm password mismatch', async ({page}) => {
|
|
await page.goto('/')
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
let password = 'testPASS123456!'
|
|
let confirmPassword = 'testPASS123456!!'
|
|
await register(page, users["admin"].username, users["admin"].email, password, confirmPassword)
|
|
|
|
const toast = page.locator('text=The passwords did not match')
|
|
await expect(toast).toBeVisible()
|
|
})
|
|
|
|
test('Successful register for admin', async ({page}) => {
|
|
await page.goto('/')
|
|
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
await register(page, users["admin"].username, users["admin"].email, users["admin"].password, users["admin"].password)
|
|
|
|
await expect(page).toHaveURL('/login', {timeout: TIMEOUT})
|
|
})
|
|
|
|
test('User already exists.', async ({page}) => {
|
|
await page.goto('/')
|
|
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
await register(page, users["admin"].username, users["admin"].email, users["admin"].password, users["admin"].password)
|
|
|
|
const toast = page.locator('text=User already exists. Use another email.')
|
|
await expect(toast).toBeVisible()
|
|
})
|
|
|
|
test('Successful register for normal', async ({page}) => {
|
|
await page.goto('/')
|
|
|
|
await page.click('text=Sign up')
|
|
await expect(page).toHaveURL('/register')
|
|
|
|
await register(page, users["normal"].username, users["normal"].email, users["normal"].password, users["normal"].password)
|
|
|
|
await expect(page).toHaveURL('/login', {timeout: TIMEOUT})
|
|
})
|
|
|
|
test('Failed login because account not active', async ({page}) => {
|
|
await page.goto('/login')
|
|
await login(page, users["normal"].email, users["normal"].password)
|
|
|
|
const toast = page.locator('text=Your account is not active.')
|
|
await expect(toast).toBeVisible()
|
|
})
|
|
|
|
test('Successful login', async ({page}) => {
|
|
await page.goto('/login')
|
|
await login(page, users["admin"].email, users["admin"].password)
|
|
|
|
await expect(page).toHaveURL('/dashboard/home', {timeout: TIMEOUT})
|
|
await expect(page.getByRole('link', {name: 'Logo Portabase'})).toBeVisible()
|
|
await page.context().storageState({path: LOCAL_STORAGE_PATH})
|
|
})
|
|
})
|