-
Notifications
You must be signed in to change notification settings - Fork 24
Description
Overview
Implement comprehensive E2E test coverage for Trustify UI pages using vanilla Playwright spec tests following Page Object Model pattern.
Test Approach:
- Vanilla Playwright spec tests (
.spec.tsfiles) - Page Object Model pattern
- Custom assertions from existing framework
- No BDD/Gherkin features
Testing Decisions:
- Breadcrumb navigation tests excluded - Justified as low risk (standard PatternFly component behavior)
Total Deliverables: 34 spec files + 5 page objects
Phase 1: File Upload Tests
Goal: Implement upload functionality tests for advisories and SBOMs
Estimated Files: 9 spec files + 2 page objects
Foundation Tasks (Do First)
- Verify test data structure in
e2e/tests/common/assets/for upload test files - Create upload helpers in
e2e/tests/ui/pages/common/if patterns differ from existing tests - Add custom assertions for upload validation if needed (extend
e2e/tests/ui/assertions/)
Advisory Upload - /advisories/upload
Tasks:
- Create
AdvisoryUploadPage.tspage object - Create
upload.spec.ts- Single file uploads (CSAF, CVE, OSV) - Create
multi-file-upload.spec.ts- Multiple file uploads, progress tracking - Create
navigation.spec.ts- Success messages, navigation to details (no breadcrumb tests) - Create
error-handling.spec.ts- Invalid formats, malformed files, network errors
SBOM Upload - /sboms/upload
Tasks:
- Create
SbomUploadPage.tspage object - Create
upload.spec.ts- Single file uploads (CycloneDX 1.3-1.6, SPDX 2.2-2.3) - Create
format-validation.spec.ts- Format validation, version support - Create
multi-file-upload.spec.ts- Mixed format uploads - Create
navigation.spec.ts- Success messages, navigation to details (no breadcrumb tests)
Phase 2: License List
Goal: Implement license list page tests
Estimated Files: 4 spec files + 1 page object
Foundation Tasks (Do First)
- Update
e2e/tests/ui/pages/Navigation.ts- Add "Licenses" menu option for navigation
License List Tests - /licenses
Tasks:
- Create
LicenseListPage.tspage object - Create
filter.spec.ts- Text filters, clear filters, URL persistence - Create
pagination.spec.ts- Pagination controls, items per page - Create
sort.spec.ts- Column sorting - Create
columns.spec.ts- Column visibility and data rendering
Phase 3: Not Found Page
Goal: Implement 404 error page tests
Estimated Files: 1 spec file + 1 page object
Tasks:
- Create
NotFoundPage.tspage object - Create
error-page.spec.ts- 404 display, error icon, invalid routes
Phase 4: Importer List Enhancements
Goal: Enhance importer list tests with advanced functionality
Estimated Files: 4 spec files + 1 page object
Tasks:
- Create
ImporterListPage.tspage object - Create
enable-disable.spec.ts- Enable/disable with confirmation dialogs - Create
run-now.spec.ts- Run Now functionality, progress tracking - Create
expandable-reports.spec.ts- Reports table, pagination, sorting - Create
log-viewer.spec.ts- Log modal functionality
Phase 5: Advisory Details Enhancements
Goal: Complete advisory details page test coverage
Estimated Files: 3 spec files (1 enhanced, 2 new)
Tasks:
- Enhance
info.spec.ts- Overview, publisher, tracking cards - Create
actions.spec.ts- Download and delete actions - Create
vulnerabilities/columns.spec.ts- Discovery, release, score, CWE columns
Phase 6: Package Details Enhancements
Goal: Complete package details page test coverage
Estimated Files: 3 spec files (1 enhanced, 2 new)
Tasks:
- Enhance
info.spec.ts- Package name, qualifiers - Create
vulnerabilities/filter.spec.ts- Filter functionality, affected vulnerabilities - Create
sboms/help.spec.ts- Help icon popover
Phase 7: SBOM Details Enhancements
Goal: Complete SBOM details page test coverage
Estimated Files: 5 spec files (2 enhanced, 3 new)
Tasks:
- Enhance
info.spec.ts- Metadata, creation, statistics, package cards - Enhance
actions.spec.ts- Delete with confirmation - Create
packages/expandable-rows.spec.ts- Vulnerabilities per package - Create
packages/license.spec.ts- License info and mappings - Create
vulnerabilities/expandable-rows.spec.ts- Detailed vuln info - Create
vulnerabilities/help.spec.ts- Help popover
Phase 8: Vulnerability Details Enhancements
Goal: Complete vulnerability details page test coverage
Estimated Files: 5 spec files (1 enhanced, 4 new)
Tasks:
- Enhance
info.spec.ts- Severity shield, CVSS score - Create
overview.spec.ts- Description, reserved/published/modified dates with help popovers - Create
sboms/expandable-rows.spec.ts- Affected packages per SBOM - Create
sboms/status-labels.spec.ts- Vulnerability status labels - Create
advisories/filter.spec.ts- Filter functionality
Key Patterns
- Use custom assertions from
e2e/tests/ui/assertions/ - Follow Page Object Model from existing tests
- Test critical user flows end-to-end
- Verify URL state persistence for filters/pagination
- Test both success and error scenarios
- Exclude breadcrumb navigation tests (low risk, standard PatternFly behavior)
Reference Files
e2e/tests/ui/pages/Table.ts- Table interaction patternse2e/tests/ui/pages/Toolbar.ts- Filter patternse2e/tests/ui/pages/common/filter-test-helpers.ts- Reusable helpersclient/src/app/components/UploadFiles.tsx- Upload UI structuree2e/tests/ui/pages/sbom-list/SbomListPage.ts- List page patternclient/src/app/pages/importer-list/importer-list.tsx- Expandable row pattern
Verification
# Run individual tests
npm run e2e:test -- <test-file-path>
# Run full suite
npm run e2e:testMetadata
Metadata
Assignees
Labels
Type
Projects
Status