tftsr-devops_investigation/node_modules/query-selector-shadow-dom/plugins/codeceptjs
Shaun Arman 8839075805 feat: initial implementation of TFTSR IT Triage & RCA application
Implements Phases 1-8 of the TFTSR implementation plan.

Rust backend (Tauri 2.x, src-tauri/):
- Multi-provider AI: OpenAI-compatible, Anthropic, Gemini, Mistral, Ollama
- PII detection engine: 11 regex patterns with overlap resolution
- SQLCipher AES-256 encrypted database with 10 versioned migrations
- 28 Tauri IPC commands for triage, analysis, document, and system ops
- Ollama: hardware probe, model recommendations, pull/delete with events
- RCA and blameless post-mortem Markdown document generators
- PDF export via printpdf
- Audit log: SHA-256 hash of every external data send
- Integration stubs for Confluence, ServiceNow, Azure DevOps (v0.2)

Frontend (React 18 + TypeScript + Vite, src/):
- 9 pages: full triage workflow NewIssue→LogUpload→Triage→Resolution→RCA→Postmortem→History+Settings
- 7 components: ChatWindow, TriageProgress, PiiDiffViewer, DocEditor, HardwareReport, ModelSelector, UI primitives
- 3 Zustand stores: session, settings (persisted), history
- Type-safe tauriCommands.ts matching Rust backend types exactly
- 8 IT domain system prompts (Linux, Windows, Network, K8s, DB, Virt, HW, Obs)

DevOps:
- .woodpecker/test.yml: rustfmt, clippy, cargo test, tsc, vitest on every push
- .woodpecker/release.yml: linux/amd64 + linux/arm64 builds, Gogs release upload

Verified:
- cargo check: zero errors
- tsc --noEmit: zero errors
- vitest run: 13/13 unit tests passing

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 22:36:25 -05:00
..
index.js feat: initial implementation of TFTSR IT Triage & RCA application 2026-03-14 22:36:25 -05:00
README.md feat: initial implementation of TFTSR IT Triage & RCA application 2026-03-14 22:36:25 -05:00

Support for Shadow DOM in CodeceptJS

  • Supported CodeceptJS Helpers: Playwright only.
  • CodeceptJS 2.6.0 released webdriver.io support as an alternative if you don't want to use Playwright

Support for this plugin is currently limited to Playwright, this is mostly due to the fact that playwright allows for the addition of custom selector engines.

Goal/Example: To be able to write a test that works easily with shadow dom web components. See Issues for what currently works and what doesn't

Feature("The chrome downloads page");
Scenario("Can interact with the search box", async I => {
  I.amOnPage("chrome://downloads");
  I.see("Files you download appear here", {shadow: "#no-downloads span"});
  I.waitForVisible({shadow: "#no-downloads"}, 5);
  I.click({shadow: `[title="Search downloads"]`});
  I.waitForVisible({shadow: '#searchInput'}, 5);
  I.fillField({shadow: '#searchInput'}, "A download")
  I.waitForValue({shadow: '#searchInput'}, "A download", 5)
  I.waitForText("No search results found", 3, {shadow: "#no-downloads span"});
  I.clearField({shadow: '#searchInput'})
  I.waitForValue({shadow: '#searchInput'}, "", 5)
});

Setup:

  1. npm install query-selector-shadow-dom codeceptjs playwright
  2. Setup a codeceptjs project: https://codecept.io/quickstart/
  3. In codecept.config.js add this shadow dom plugin
 plugins: {
    shadowDom: {
      enabled: true,
      locator: "shadow",
      require: "query-selector-shadow-dom/plugins/codeceptjs"
    }
  }
  1. Start using the custom locator {shadow: "..."} You may rename the locator in the config file from "shadow" to something else.
  2. Read issues below as not everything currently works.

Issues:

What works

The following methods are not supported as of right now:

  • waitForNoVisibleElements (looking for help should be do-able, feel free to PR to CodeceptJS)