Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
88d4b7f
chore(test): Migrate cypress offline tests to playwright
mejo- Oct 28, 2025
f42e773
chore(test): split setOnline and setOffline
max-nextcloud Nov 3, 2025
abd2530
chore(test): add offline fixture to playwright
max-nextcloud Nov 3, 2025
0343bb5
chore(test): get request token from /csrftoken
max-nextcloud Nov 3, 2025
3e1456a
chore(test): split request token fixture from random user
max-nextcloud Nov 3, 2025
ebaa4fc
chore(test): cleanup unused type and context
max-nextcloud Nov 3, 2025
37a2dc6
chore(test): mimetype change in playwright
max-nextcloud Nov 3, 2025
a2e10ef
chore(test): basic editor page object model
max-nextcloud Nov 3, 2025
5194f1a
chore(test): file class for handling uploaded file
max-nextcloud Nov 3, 2025
0346d74
chore(test): file.open()
max-nextcloud Nov 3, 2025
d90e16d
chore(test): with file.move() and file.close()
max-nextcloud Nov 3, 2025
a875af0
chore(test): with editor.typeHeading()
max-nextcloud Nov 3, 2025
1395840
chore(test): change mimetype both ways
max-nextcloud Nov 3, 2025
63265bc
chore(test): move File class to separate file
max-nextcloud Nov 4, 2025
9b78608
chore(test): use EditorSection in offline test
max-nextcloud Nov 7, 2025
4efa6d8
chore(test) .withOpenMenu() to access submenus
max-nextcloud Nov 7, 2025
49e9550
chore(test): write offline and come back online
max-nextcloud Nov 7, 2025
6befe7d
chore(test): reduce nesting in offline test
max-nextcloud Nov 7, 2025
f8b0607
chore(test): wait for close request when closing
max-nextcloud Nov 7, 2025
ec36494
chore(test): migrate mobile spec from cy to playwright
max-nextcloud Nov 12, 2025
c005166
chore(test): convert smart picker test to playwright
max-nextcloud Nov 13, 2025
597cc03
chore(test): convert print spec to playwright
max-nextcloud Nov 14, 2025
3f25b26
chore(test): new File() with params object
max-nextcloud Nov 14, 2025
f76fd47
chore(test): handle request token as part of login
max-nextcloud Nov 14, 2025
740edf7
chore(test): User class to wrap Account and Page
max-nextcloud Nov 14, 2025
cadde9b
chore(test): print with shared file
max-nextcloud Nov 14, 2025
58eaddc
chore(test): no need to merge randomUserTest
max-nextcloud Nov 14, 2025
d514549
chore(test): rename editor.locator to editor.el
max-nextcloud Nov 15, 2025
7f1e50a
chore(test): make File attributes read only
max-nextcloud Nov 15, 2025
60b6b39
chore(test): use parameter properties
max-nextcloud Nov 15, 2025
3cece82
chore(test): separate screenshots based on host
max-nextcloud Nov 16, 2025
155c409
chore(test): add versions spec
max-nextcloud Nov 18, 2025
e204aab
chore(test): versions with ViewerSection
max-nextcloud Nov 18, 2025
1f48a6b
chore(test): move close() into ViewerSection
max-nextcloud Nov 18, 2025
c0c7ccf
chore(test): convert version spec from cy to playwright
max-nextcloud Nov 18, 2025
5062a99
chore(test): folder description with playwright
max-nextcloud Nov 20, 2025
152dc85
chore(playwright): Fix prettier warnings
mejo- Nov 24, 2025
117e115
test(playwright): Add regression test for CJK IME input as first char…
mejo- Nov 25, 2025
05c4637
chore(test): format text with playwright
max-nextcloud Nov 26, 2025
1b4e5bc
fix(css): full width table in print view
max-nextcloud Dec 1, 2025
0926432
chore(deps): update dependency cypress to v15
max-nextcloud Jan 31, 2026
360b056
chore(cleanup): unused cypress component.js
max-nextcloud Dec 2, 2025
2881de3
chore(test): do not run playwright test with vitest
max-nextcloud Jan 31, 2026
f01177d
chore(test): remove superfluous cy print spec
max-nextcloud Nov 14, 2025
9afd996
chore(lint): fix playwright to match stable31 style
max-nextcloud Feb 1, 2026
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
10 changes: 10 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ module.exports = {
extends: [
'@nextcloud',
],
overrides: [
{
files: ['**/*.ts'],
rules: {
// Do not err out on constructors with parameter properties only.
'no-useless-constructor': 'off',
'@typescript-eslint/no-useless-constructor': 'error',
},
},
],
rules: {
'@typescript-eslint/no-unused-vars': ['off'],
'import/no-unresolved': [1, { ignore: ['\\.svg\\?raw$'] }],
Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

name: Playwright Tests
on:
pull_request:
branches: [main]

jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout app
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
with:
files: 'composer.json'

- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: composer install --no-dev

- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
id: versions
with:
fallbackNode: '^20'
fallbackNpm: '^10'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"

- name: Install node dependencies & build app
run: |
npm ci
TESTING=true npm run build --if-present

- name: Install Playwright Browsers
run: npx playwright install chromium --only-shell

- name: Run Playwright tests
run: npx playwright test

- uses: actions/upload-artifact@v5
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,17 @@ cypress/snapshots/actual
cypress/snapshots/diff
cypress/videos/
cypress/downloads/
/playwright-report/
.php-cs-fixer.cache
/test-results/
/tests/clover.xml
/tests/.phpunit.result.cache
dist/
webpack-stats.json

# js folder, to be updated wth --force
/js

# Playwright snapshots - only keep the ci version in git
playwright/e2e/*-snapshots/**
!playwright/e2e/*-snapshots/*-on-ci-**
2 changes: 1 addition & 1 deletion REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ SPDX-FileCopyrightText = "Nils Adermann, Jordi Boggiano"
SPDX-License-Identifier = "MIT"

[[annotations]]
path = ["cypress/fixtures/**", "cypress/snapshots/**", "src/tests/fixtures/**", "src/tests/**/__snapshots__/**"]
path = ["cypress/fixtures/**", "cypress/snapshots/**", "playwright/support/fixtures/files/**", "playwright/e2e/*-snapshots/**", "src/tests/fixtures/**", "src/tests/**/__snapshots__/**"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2019-2025 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
Expand Down
88 changes: 0 additions & 88 deletions cypress/e2e/SmartPicker.spec.js

This file was deleted.

47 changes: 0 additions & 47 deletions cypress/e2e/mobile.spec.js

This file was deleted.

52 changes: 0 additions & 52 deletions cypress/e2e/print.spec.js

This file was deleted.

Loading
Loading