Triple cleanup, landed together because they share the same cleanup branch intent and touch non-overlapping trees. 1. 38× tracked .playwright-mcp/*.yml stage-deleted MCP session recordings that had been inadvertently committed. .gitignore already covers .playwright-mcp/ (post-audit J2 block added ind12b901de). Working tree copies removed separately. 2. 19× disabled CI workflows moved to docs/archive/workflows/ Legacy .yml.disabled files in .github/workflows/ were 1676 LOC of dead config (backend-ci, cd, staging-validation, accessibility, chromatic, visual-regression, storybook-audit, contract-testing, zap-dast, container-scan, semgrep, sast, mutation-testing, rust-mutation, load-test-nightly, flaky-report, openapi-lint, commitlint, performance). Preserved in docs/archive/workflows/ for historical reference; `.github/workflows/` now only lists the 5 actually-running pipelines. 3. Orphan code removed (0 consumers confirmed via grep) - veza-backend-api/internal/repository/user_repository.go In-memory UserRepository mock, never imported anywhere. - proto/chat/chat.proto Chat server Rust deleted 2026-02-22 (commit279a10d31); proto file was orphan spec. Chat lives 100% in Go backend now. - veza-common/src/types/chat.rs (Conversation, Message, MessageType, Attachment, Reaction) - veza-common/src/types/websocket.rs (WebSocketMessage, PresenceStatus, CallType — depended on chat::MessageType) - veza-common/src/types/mod.rs updated: removed `pub mod chat;`, `pub mod websocket;`, and their re-exports. Only `veza_common::logging` is consumed by veza-stream-server (verified with `grep -r "veza_common::"`). `cargo check` on veza-common passes post-removal. Refs: AUDIT_REPORT.md §8.2 "Code mort / orphelin" + §9.1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
70 lines
1.4 KiB
TypeScript
70 lines
1.4 KiB
TypeScript
/**
|
|
* Centralized Playwright selectors — mirrors TESTID from
|
|
* apps/web/src/components/ui/testids.ts
|
|
*
|
|
* Usage:
|
|
* import { SEL } from './helpers/selectors';
|
|
* await page.getByTestId(SEL.toast.success).click();
|
|
*/
|
|
export const SEL = {
|
|
// Toast
|
|
toast: {
|
|
success: 'toast-success',
|
|
error: 'toast-error',
|
|
info: 'toast-info',
|
|
message: 'toast-message',
|
|
close: 'toast-close',
|
|
},
|
|
|
|
// Dialog
|
|
dialog: {
|
|
root: 'dialog',
|
|
title: 'dialog-title',
|
|
close: 'dialog-close',
|
|
content: 'dialog-content',
|
|
footer: 'dialog-footer',
|
|
confirm: 'dialog-confirm',
|
|
cancel: 'dialog-cancel',
|
|
},
|
|
|
|
// Confirmation Dialog
|
|
confirmationDialog: {
|
|
root: 'confirmation-dialog',
|
|
description: 'confirmation-description',
|
|
icon: 'confirmation-icon',
|
|
},
|
|
|
|
// Radio
|
|
radioGroup: {
|
|
root: 'radio-group',
|
|
item: (value: string) => `radio-item-${value}`,
|
|
},
|
|
|
|
// Checkbox
|
|
checkbox: {
|
|
root: 'checkbox',
|
|
input: 'checkbox-input',
|
|
label: 'checkbox-label',
|
|
},
|
|
|
|
// Layout
|
|
sidebar: 'app-sidebar',
|
|
header: 'app-header',
|
|
player: 'global-player',
|
|
|
|
// Auth
|
|
loginForm: 'login-form',
|
|
loginSubmit: 'login-submit',
|
|
registerForm: 'register-form',
|
|
|
|
// Player
|
|
audioElement: 'audio-element',
|
|
volumeControl: 'volume-control',
|
|
|
|
// Search
|
|
searchInput: 'search-input',
|
|
|
|
// Cards
|
|
trackCard: 'track-card',
|
|
playlistCard: 'playlist-card',
|
|
} as const;
|