Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

chore: openspec strict-clean + npm audit fix + dashboard-sharing archive + playwright wiring#100

Merged
rubenvdlinde merged 3 commits into
developmentfrom
chore/openspec-followups
May 2, 2026
Merged

chore: openspec strict-clean + npm audit fix + dashboard-sharing archive + playwright wiring#100
rubenvdlinde merged 3 commits into
developmentfrom
chore/openspec-followups

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented May 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Four small fixups bundled:

  1. OpenSpec strict-cleannewman-integration-suite-2026-04-24 and spec-annotation-pass-2026-04-24 previously had specs/README.md files declaring "no delta needed", which openspec validate --strict rejects. Replaced with minimal real spec deltas declaring their intent against new tooling capabilities (integration-tests, code-annotations).

  2. npm audit fix — clears both HIGH severity vulnerabilities (serialize-javascript). Now 0 high. Only package-lock.json modified, no breaking changes.

  3. dashboard-sharing-followups archived — features REQ-SHARE-008..013 (notifications, bulk replace, recipient revoke, UserDeletedEvent cascade with admin retention + deterministic owner selection) verified implemented across 36 references in lib/. Spec delta merged into canonical openspec/specs/dashboard-sharing/spec.md. Change folder moved to openspec/changes/archive/2026-04-30-dashboard-sharing-followups/.

  4. Net-new test additions from WIPtestGroupSharedConstants (REQ-DASH-011/012/013) plus three PERMISSION_* assertions. SPDX headers added to both test files.

  5. Playwright E2E runner wired up — adds @playwright/test, playwright.config.ts, admin-login global-setup.ts, and npm scripts (test:e2e, test:e2e:ui, test:e2e:headed). Storage state persisted at tests/e2e/.auth/admin.json (gitignored). 4 spec files exist on dev (label/image/text-display/responsive-grid); first-run triage shows wiring works but the mounted custom_apps/mydash is on an older branch — once it's switched to development the specs should run.

Quality gates

  • openspec validate --all --strict: 46 passed, 0 failed
  • npm test: 299/299 vitest passing
  • npm run build: clean
  • npm audit: 0 high (was 2 high before)
  • PHPUnit DashboardTest + DashboardFactoryTest: 43/43 passing

Test plan

  • openspec validate clean
  • vitest pass
  • PHPUnit pass on touched test files
  • build clean
  • Playwright run after switching custom_apps/mydash mount to development
  • CI green on development base

…llowups archive

- Add minimal spec deltas for newman-integration-suite + spec-annotation-pass
  changes so they pass validate --strict (each previously had a README.md
  noting "no delta needed" which the validator rejects). They now declare
  their intent against new tooling capabilities (integration-tests,
  code-annotations).
- Archive dashboard-sharing-followups: features REQ-SHARE-008..013 are
  implemented in lib/ (notifications via INotifier, bulk replace via
  PUT /api/dashboard/{id}/shares, recipient revoke via
  DELETE /api/sharees/{type}/{with}, UserDeletedEvent listener with admin
  retention + deterministic new-owner selection). Spec delta merged into
  canonical openspec/specs/dashboard-sharing/spec.md.
- npm audit fix clears both highs (serialize-javascript), now 0 high.
  Only package-lock.json modified, no breaking changes.

openspec validate --all --strict: 46/46 passing, 0 failed.
@github-actions

github-actions Bot commented May 2, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/mydash @ 6c25c37

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 500/500
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-02 16:26 UTC

Download the full PDF report from the workflow artifacts.

…ssertions

Picks up the net-new test additions from the user's WIP that weren't on
dev: testGroupSharedConstants verifies REQ-DASH-011/012/013 constants
(TYPE_GROUP_SHARED, DEFAULT_GROUP_ID, SOURCE_USER/GROUP/DEFAULT) are
exposed on the entity, and the existing testTypeConstants gains three
PERMISSION_* assertions. Both files also gain SPDX-FileCopyrightText +
SPDX-License-Identifier inside the existing docblock per project rules.

All other WIP-vs-dev divergence is the user's branch lagging behind dev
(working tree contains older versions of files that PR #99 already updated)
— no further integration work needed.
@github-actions

github-actions Bot commented May 2, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/mydash @ e83e310

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 500/500
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-02 16:28 UTC

Download the full PDF report from the workflow artifacts.

Adds @playwright/test config, admin-login global setup, tiny PNG upload
fixture, and per-suite README with triage results. Per-spec auth handled
once via storageState harvested from a real browser login (driving the
NC /login form is the only stable cross-version method since CSRF token
rotation shifted across NC 28/29/30).

Discovered: only 4 e2e spec files (14 cases) made it onto development
via PR #99 — not the 24 originally scoped, since most feature branches
carried only the canonical label-widget.spec.ts template.

First-run results: 0 passing / 14 failing — every failure is the same
500 from PageController::index() because the mounted custom_apps/mydash
copy predates InitialStateBuilder (introduced by initial-state-contract
on dev). Specs themselves are sound; runner needs the install switched
to development. Documented in tests/e2e/README.md; no .skip()/.fixme()
markers added because hiding the 500 would mask the real env signal.
@rubenvdlinde rubenvdlinde changed the title chore: openspec strict-clean + npm audit fix + dashboard-sharing-followups archive chore: openspec strict-clean + npm audit fix + dashboard-sharing archive + playwright wiring May 2, 2026
@rubenvdlinde rubenvdlinde merged commit 430ad50 into development May 2, 2026
15 of 18 checks passed
@rubenvdlinde rubenvdlinde deleted the chore/openspec-followups branch May 2, 2026 16:41
@github-actions

github-actions Bot commented May 2, 2026

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/mydash @ 4246a7e

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 501/501
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-02 16:42 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde added a commit that referenced this pull request May 3, 2026
chore: openspec strict-clean + npm audit fix + dashboard-sharing archive + playwright wiring
rubenvdlinde added a commit that referenced this pull request May 3, 2026
Closes the temporary `~2.5.2` pin from the OpenSpec merge stabilisation
work (PR #100). 2.6 is ESM-only and ships an `exports` map that no
longer exposes a `require` condition.

Vite/Vitest worker now resolves the ESM exports map natively, so the
local stub at `tests/vitest/stubs/nextcloud-axios.js` and its alias in
`vitest.config.js` are no longer needed and have been removed. All 299
unit tests still pass via `vi.mock('@nextcloud/axios', ...)` overrides.

Webpack 5 needs a small alias to bypass the `exports` map: the CJS
bundle of `@nextcloud/vue@8.x` (latest Vue 2 line, locked to 8.36.0)
internally does `require('@nextcloud/axios')`, which the new exports
map rejects under the `require` condition. Aliasing
`@nextcloud/axios$` directly to `dist/index.js` lets webpack treat the
module as a regular ESM file and interop it itself. This is a
build-only workaround; once @nextcloud/vue ships a 2.6-aware build
(or once we move to Vue 3 / @nextcloud/vue 9.x) the alias can drop.

Quality gates:
- `npm test` — 27 files, 299/299 passing
- `npm run build` — 0 errors, 5 pre-existing warnings (floating-ui,
  asset size)
- `composer check:strict` — PHPCS, Psalm, PHPStan, PHPUnit (411/411)
  all green
rubenvdlinde added a commit that referenced this pull request May 3, 2026
Resolves the SHA-based merge ambiguity caused by the wave2 filter-branch
rewrite. Wave2 textually contains all of PRs #99/#100/#101/#102, and
all 60 conflicting code/spec/l10n files were superset-resolved by
taking wave2's version (HEAD). Brings in PR #103 (.github/CODEOWNERS)
and PR #105 (openspec/changes/mydash-adopt-or-abstractions/) cleanly
since neither overlapped with wave2 work.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant