committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 238 additions and 14 deletions
-
6.gitignore
-
126package-lock.json
-
1package.json
-
82playwright.config.ts
-
37src/__tests__/e2e/example.spec.ts
@ -0,0 +1,82 @@ |
|||
import { defineConfig, devices } from '@playwright/test' |
|||
|
|||
/** |
|||
* Read environment variables from file. |
|||
* https://github.com/motdotla/dotenv
|
|||
*/ |
|||
// import dotenv from 'dotenv';
|
|||
// import path from 'path';
|
|||
// dotenv.config({ path: path.resolve(__dirname, '.env') });
|
|||
|
|||
/** |
|||
* See https://playwright.dev/docs/test-configuration.
|
|||
*/ |
|||
export default defineConfig({ |
|||
testDir: './src/__tests__/e2e', |
|||
/* Run tests in files in parallel */ |
|||
fullyParallel: true, |
|||
/* Fail the build on CI if you accidentally left test.only in the source code. */ |
|||
forbidOnly: !!process.env.CI, |
|||
/* Retry on CI only */ |
|||
retries: process.env.CI ? 2 : 0, |
|||
/* Opt out of parallel tests on CI. */ |
|||
workers: process.env.CI ? 1 : undefined, |
|||
/* Reporter to use. See https://playwright.dev/docs/test-reporters */ |
|||
reporter: 'html', |
|||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ |
|||
use: { |
|||
/* Base URL to use in actions like `await page.goto('/')`. */ |
|||
baseURL: 'https://nextcloud.local/index.php/', |
|||
|
|||
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ |
|||
trace: 'on-first-retry', |
|||
|
|||
/* Ignore HTTPS errors | SSL certificate */ |
|||
ignoreHTTPSErrors: true, |
|||
}, |
|||
|
|||
/* Configure projects for major browsers */ |
|||
projects: [ |
|||
{ |
|||
name: 'chromium', |
|||
use: { ...devices['Desktop Chrome'] }, |
|||
}, |
|||
|
|||
{ |
|||
name: 'firefox', |
|||
use: { ...devices['Desktop Firefox'] }, |
|||
}, |
|||
|
|||
{ |
|||
name: 'webkit', |
|||
use: { ...devices['Desktop Safari'] }, |
|||
}, |
|||
|
|||
/* Test against mobile viewports. */ |
|||
// {
|
|||
// name: 'Mobile Chrome',
|
|||
// use: { ...devices['Pixel 5'] },
|
|||
// },
|
|||
// {
|
|||
// name: 'Mobile Safari',
|
|||
// use: { ...devices['iPhone 12'] },
|
|||
// },
|
|||
|
|||
/* Test against branded browsers. */ |
|||
// {
|
|||
// name: 'Microsoft Edge',
|
|||
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
|
|||
// },
|
|||
// {
|
|||
// name: 'Google Chrome',
|
|||
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
|
|||
// },
|
|||
], |
|||
|
|||
/* Run your local dev server before starting the tests */ |
|||
// webServer: {
|
|||
// command: 'npm run start',
|
|||
// url: 'http://localhost:3000',
|
|||
// reuseExistingServer: !process.env.CI,
|
|||
// },
|
|||
}) |
@ -0,0 +1,37 @@ |
|||
import type { Page } from '@playwright/test' |
|||
|
|||
import { expect, test } from '@playwright/test' |
|||
|
|||
async function login(page: Page, { login, password, location }: { |
|||
login: string |
|||
password: string |
|||
location: string |
|||
}) { |
|||
await page.goto('apps/spreed/') |
|||
await page.getByRole('textbox', { name: 'Account name or email' }).fill('admin') |
|||
await page.getByRole('textbox', { name: 'Password' }).fill('admin') |
|||
await page.getByRole('button', { name: 'Log in', exact: true }).click() |
|||
await page.waitForURL('apps/spreed/') |
|||
} |
|||
|
|||
test('can open app', async ({ page }) => { |
|||
await login(page, { login: 'admin', password: 'admin', location: 'apps/spreed/' }) |
|||
// Expect a title "to contain" a substring.
|
|||
await expect(page).toHaveTitle(/Talk - Nextcloud/) |
|||
}) |
|||
|
|||
test('can open a conversation', async ({ page }) => { |
|||
await login(page, { login: 'admin', password: 'admin', location: 'apps/spreed/' }) |
|||
await page.getByRole('textbox', { name: 'Search …' }).fill('test') |
|||
await page.locator('a[href="/index.php/call/biiwputz"]').click() |
|||
await page.waitForURL('call/biiwputz') |
|||
|
|||
const selector = '.rich-contenteditable__input' |
|||
await expect(page.locator(selector)).toBeVisible() |
|||
await page.waitForFunction((selector) => document.querySelector(selector)!.getAttribute('contenteditable') === 'true', selector) |
|||
// Expects page to have a heading with the name of Installation.
|
|||
// await expect(page.getByRole('textbox', { name: 'Write a message' })).toBeVisible()
|
|||
await page.locator(selector).fill('wololo') |
|||
|
|||
await page.locator('button[aria-label="Send message"]').click() |
|||
}) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue