Skip to content
Merged
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
8acbbd4
chore(test): Migrate cypress offline tests to playwright
mejo- Oct 28, 2025
02139c9
chore(test): split setOnline and setOffline
max-nextcloud Nov 3, 2025
c49375a
chore(test): add offline fixture to playwright
max-nextcloud Nov 3, 2025
b351830
chore(test): get request token from /csrftoken
max-nextcloud Nov 3, 2025
64956a9
chore(test): split request token fixture from random user
max-nextcloud Nov 3, 2025
193a26b
chore(test): cleanup unused type and context
max-nextcloud Nov 3, 2025
fe5a50d
chore(test): mimetype change in playwright
max-nextcloud Nov 3, 2025
bc38a04
chore(test): basic editor page object model
max-nextcloud Nov 3, 2025
e3df0e3
chore(test): file class for handling uploaded file
max-nextcloud Nov 3, 2025
ba19dc8
chore(test): file.open()
max-nextcloud Nov 3, 2025
e2e841e
chore(test): with file.move() and file.close()
max-nextcloud Nov 3, 2025
0867ba9
chore(test): with editor.typeHeading()
max-nextcloud Nov 3, 2025
f0bc8b9
chore(test): change mimetype both ways
max-nextcloud Nov 3, 2025
dc1bbc0
chore(test): move File class to separate file
max-nextcloud Nov 4, 2025
8df18d3
chore(test): use EditorSection in offline test
max-nextcloud Nov 7, 2025
b1326e3
chore(test) .withOpenMenu() to access submenus
max-nextcloud Nov 7, 2025
4eb1132
chore(test): write offline and come back online
max-nextcloud Nov 7, 2025
01caeed
chore(test): reduce nesting in offline test
max-nextcloud Nov 7, 2025
f28717c
chore(test): wait for close request when closing
max-nextcloud Nov 7, 2025
2399878
chore(test): migrate mobile spec from cy to playwright
max-nextcloud Nov 12, 2025
82869d4
chore(test): convert smart picker test to playwright
max-nextcloud Nov 13, 2025
2aa1f9e
chore(test): convert print spec to playwright
max-nextcloud Nov 14, 2025
1654125
chore(test): new File() with params object
max-nextcloud Nov 14, 2025
28c1db8
chore(test): handle request token as part of login
max-nextcloud Nov 14, 2025
aecc701
chore(test): User class to wrap Account and Page
max-nextcloud Nov 14, 2025
9a8da13
chore(test): print with shared file
max-nextcloud Nov 14, 2025
68f4a9a
chore(test): no need to merge randomUserTest
max-nextcloud Nov 14, 2025
b90c638
chore(test): rename editor.locator to editor.el
max-nextcloud Nov 15, 2025
2b7e0a9
chore(test): make File attributes read only
max-nextcloud Nov 15, 2025
de4abef
chore(test): use parameter properties
max-nextcloud Nov 15, 2025
70e288b
chore(test): separate screenshots based on host
max-nextcloud Nov 16, 2025
098868f
chore(test): add versions spec
max-nextcloud Nov 18, 2025
c2c7dd9
chore(test): versions with ViewerSection
max-nextcloud Nov 18, 2025
fcf1379
chore(test): move close() into ViewerSection
max-nextcloud Nov 18, 2025
24cc3c8
chore(test): convert version spec from cy to playwright
max-nextcloud Nov 18, 2025
3d5f716
chore(test): folder description with playwright
max-nextcloud Nov 20, 2025
076bfac
chore(playwright): Fix prettier warnings
mejo- Nov 24, 2025
f1845ca
test(playwright): Add regression test for CJK IME input as first char…
mejo- Nov 25, 2025
9030fc8
chore(test): format text with playwright
max-nextcloud Nov 26, 2025
9e5748c
fix(css): full width table in print view
max-nextcloud Dec 1, 2025
a0d3345
chore(deps): update dependency cypress to v15
max-nextcloud Jan 31, 2026
c33c0aa
chore(cleanup): unused cypress component.js
max-nextcloud Dec 2, 2025
2a5084c
chore(test): do not run playwright test with vitest
max-nextcloud Jan 31, 2026
2df1049
chore(test): update print screenshots with new browser version
max-nextcloud Jan 31, 2026
a5d568d
chore(test): only consider src for codecov patch status
max-nextcloud Jan 31, 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
8 changes: 8 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ module.exports = {
'vue/first-attribute-linebreak': 'off',
},
},
{
files: ['**/*.ts'],
rules: {
// Do not err out on constructors with parameter properties only.
'no-useless-constructor': 'off',
'@typescript-eslint/no-useless-constructor': 'error',
},
},
],
rules: {
'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
5 changes: 5 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,8 @@ coverage:
paths:
- 'src'
only_pulls: true
patch:
default:
paths:
- 'src'
only_pulls: true
84 changes: 0 additions & 84 deletions cypress/e2e/SmartPicker.spec.js

This file was deleted.

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

This file was deleted.

Loading
Loading