4.1 KiB
4.1 KiB
Smoke Test Suite
Purpose
Define a fast, high-signal regression suite that can be run frequently (for example on each commit or before deployment).
Target runtime should remain short (for example <= 5 minutes in CI).
Smoke Fixtures
Use a minimal subset:
- CE-001 (single timed)
- CE-002 (all-day)
- CE-003 (daily recurring)
- CE-010 (recurring with single-occurrence delete exception)
Smoke Tests
SMK-001 Plugin Health
- Plugin activates without fatal errors.
- Calendar admin main menu and sub-entries render:
UsersSetupDiagnostics
SMK-002 CRUD Happy Path
- Create CE-001 using write-enabled calendar UI/API.
- Update CE-001 title.
- Delete CE-001.
- Assert expected success feedback and list updates.
SMK-003 Recurrence Exception Behavior
- Create CE-010.
- Delete single occurrence (
2026-04-17T14:00:00+01:00). - Assert sequence remains intact and one exception is recorded.
SMK-004 Public UI Rendering
- Render shortcode page with CE-002 and CE-003 present.
- Assert no runtime error and event data is visible in default view.
SMK-005 ICS Endpoint
- Fetch ICS link.
- Assert
200andtext/calendar. - Assert CE-003 appears with recurrence metadata.
- Assert CE-010 exception is represented (no split-series artifact).
SMK-006 CalDAV Read/Write Gate
pending_approvalor unverified user: cannot authenticate.activeuser: can discover/read/create/update/delete one event successfully.- Monthly ordinal recurrence must round-trip for CalDAV writes (
BYDAY=2SAandBYSETPOS=-1cases).
SMK-007 API Smoke (If API Exposed)
- Event create/list/delete basic path.
- User register/verify/admin-approval path.
- One unauthorized request check.
SMK-008 Security Regression Smoke
- Register and forgot-password responses must not include raw verification/reset tokens.
- Register flow must trigger rate limiting (
429) under abusive request volume. - Stored user password hashes must use hardened hash format (not plaintext / not legacy fast hash).
- CalDAV object handling must preserve strict resource filename semantics (UUID-like
.icsnames work; unknown numeric path returns404). - Legacy local harness check is archived at
fixture-tests/fixture_security_smoke.sh.
SMK-009 CalDAV Client Discovery Compatibility
- Unauthenticated
GET /caldav/must return401withWWW-Authenticate: Basic .... - Authenticated
OPTIONS /caldav/must advertise DAV calendar capability (DAV: 1, calendar-access) and discovery methods. - Authenticated
PROPFIND /caldav/must expose:current-user-principal- calendar home set path
- discoverable calendar collection href
- Authenticated
PROPFINDon principal must returncalendar-home-set. - Authenticated
PROPFIND /caldav/calendars/must include calendar collection metadata (<C:calendar/>) and supported component set (VEVENT). - Authenticated
GETon calendar collection (.../calendars/public/) must return200(availability probe compatibility). - Authenticated
REPORT sync-collectionmust succeed for both trailing slash and no-trailing-slash collection URLs. - No-change
sync-collection(current token) must return no change entries. - Legacy local harness check is archived at
fixture-tests/fixture_caldav_client_compat_smoke.sh.
SMK-010 Lifecycle Controls (Staging Only)
- Verify Setup exposes
Uninstall Cleanupsetting with:keep(default)remove
- Verify deactivation does not remove tables/data.
- Verify uninstall behavior follows selected mode (
keeppreserves tables,removedrops plugin-owned tables/options). - Full destructive flow is defined in
tests/lifecycle_test_cases.md.
Failure Handling
- Any smoke failure blocks merge/deploy.
- Capture artifact bundle: logs, request/response snippets, and failing fixture payload.
Suggested Run Schedule
- Per commit: SMK-001..007
- Pre-release: smoke + full E2E + full API suite + SMK-009
- Nightly: full E2E + compatibility checks with target CalDAV/ICS clients
Remote Runner
- Automated remote API+E2E smoke runner:
./tests/run_remote_tests.sh - Optional overrides:
./tests/run_remote_tests.sh --base-url https://chezstephens.org.uk --user <email> --password <password>