- task-20-full-suite.txt: E2E test suite summary - task-20-pest-pass.txt: Pest tests verification - task-20-build.txt: Build verification - final-verification.txt: Complete F1-F4 verification report All verification tasks passed with APPROVE verdict
40 lines
2.2 KiB
Plaintext
40 lines
2.2 KiB
Plaintext
# Task 4: data-testid Verification — Login Page
|
|
# Date: 2026-03-01
|
|
|
|
## Note: Inertia/Vue SPA — data-testid renders client-side, not in initial HTML
|
|
## curl -s http://cts-work.test/login returns raw HTML before Vue hydration
|
|
## data-testid attributes are compiled into the JS bundles
|
|
|
|
## Login JS bundle data-testid count:
|
|
# grep -o 'data-testid' public/build/assets/Login-*.js | wc -l
|
|
# Result: 3 (login-oauth-button, login-test-button, guest-layout-logo-link)
|
|
|
|
## Total data-testid in built JS:
|
|
# grep -roh 'data-testid' public/build/assets/*.js | wc -l
|
|
# Result: 90
|
|
|
|
## Total data-testid in Vue source files:
|
|
# grep -roh 'data-testid' resources/js/ | wc -l
|
|
# Result: 98
|
|
|
|
## Breakdown by file (source):
|
|
# Login.vue: 2 (login-oauth-button, login-test-button)
|
|
# Dashboard.vue: 1 (dashboard-welcome-text)
|
|
# Services/Index.vue: 9 (empty, table, row, reopen, download, edit, finalize, confirm-cancel, confirm-submit)
|
|
# Services/Edit.vue: 3 (back-icon, back, block-toggle)
|
|
# Songs/Index.vue: 14 (upload-area, file-input, search, clear, edit, translate, download, delete, pagination x2, delete-cancel, delete-confirm, edit-modal)
|
|
# Songs/Translate.vue: 8 (back, url-input, fetch, source-textarea, apply, save, original-textarea, translation-textarea)
|
|
# InformationBlock.vue: 3 (block, uploader, grid)
|
|
# ModerationBlock.vue: 3 (block, uploader, grid)
|
|
# SermonBlock.vue: 3 (block, uploader, grid)
|
|
# SongsBlock.vue: 9 (block, song-card, request, search, select, assign, translation-checkbox, preview, download)
|
|
# ArrangementConfigurator.vue: 7 (configurator, select, add, clone, delete, drag-handle, remove)
|
|
# SlideUploader.vue: 4 (uploader, expire-input, error-dismiss, dropzone)
|
|
# SlideGrid.vue: 6 (grid, delete, fullimage-link, expire-input, expire-save, expire-cancel)
|
|
# SongEditModal.vue: 6 (modal, close, error-close, title-input, ccli-input, copyright-textarea)
|
|
# SongPreviewModal.vue: 5 (modal, pdf-link, close, error-close, bottom-close)
|
|
# AuthenticatedLayout.vue: 12 (logo, nav-services, nav-songs, sync-timestamp, sync-button, user-dropdown, logout, hamburger, mobile-nav-services, mobile-nav-songs, mobile-sync, mobile-logout)
|
|
# GuestLayout.vue: 1 (logo-link)
|
|
# MainLayout.vue: 1 (main-layout)
|
|
# ConfirmDialog.vue: 2 (cancel, confirm)
|