tftsr-devops_investigation/node_modules/webdriverio/build/commands/browser/mock.d.ts
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

118 lines
5.1 KiB
TypeScript

import type { MockFilterOptions } from '../../utils/interception/types.js';
import WebDriverInterception from '../../utils/interception/index.js';
export declare const SESSION_MOCKS: Record<string, Set<WebDriverInterception>>;
/**
* Mock the response of a request. You can define a mock based on a matching
* [URLPattern](https://developer.mozilla.org/en-US/docs/Web/API/URLPattern)
* and corresponding header and status code. Calling the mock method
* returns a stub object that you can use to modify the response of the
* web resource.
*
* With the stub object you can then either return a custom response or
* have the request fail.
*
* There are 3 ways to modify the response:
* - return a custom JSON object (for stubbing API request)
* - replace web resource with a local file (serve a modified JavaScript file) or
* - redirect resource to a different url
*
* :::info
*
* Note that using the `mock` command requires support for WebDriver Bidi. That is
* usually the case when running tests locally in a Chromium based browser or on
* Firefox as well as if you use a Selenium Grid v4 or higher. If you run tests
* in the cloud, make sure that your cloud provider supports WebDriver Bidi.
*
* :::
*
* :::info
*
* The `URLPattern` is an experimental technology and not yet supported in some environments, e.g. Node.js.
* We recommend to import [a polyfill](https://www.npmjs.com/package/urlpattern-polyfill)
* until the feature is more widely supported.
*
* :::
*
* <example>
:mock.js
it('should mock network resources', async () => {
// via static string
const userListMock = await browser.mock('**' + '/users/list')
// you can also specifying the mock even more by filtering resources
// by request or response headers, status code, postData, e.g. mock only responses with specific
// header set and statusCode
const strictMock = await browser.mock('*', {
// mock all json responses
statusCode: 200,
requestHeaders: { 'Content-Type': 'application/json' },
responseHeaders: { 'Cache-Control': 'no-cache' },
postData: 'foobar'
})
// comparator function
const apiV1Mock = await browser.mock('**' + '/api/v1', {
statusCode: (statusCode) => statusCode >= 200 && statusCode <= 203,
requestHeaders: (headers) => headers['Authorization'] && headers['Authorization'].startsWith('Bearer '),
responseHeaders: (headers) => headers['Impersonation'],
postData: (data) => typeof data === 'string' && data.includes('foo')
})
})
it('should modify API responses', async () => {
// filter by method
const todoMock = await browser.mock('**' + '/todos', {
method: 'get'
})
// mock an endpoint with a fixed fixture
todoMock.respond([{
title: 'Injected Todo',
order: null,
completed: false,
url: "http://todo-backend-express-knex.herokuapp.com/916"
}])
// respond with different status code or header
todoMock.respond([{
title: 'Injected Todo',
order: null,
completed: false,
url: "http://todo-backend-express-knex.herokuapp.com/916"
}], {
statusCode: 404,
headers: {
'x-custom-header': 'foobar'
}
})
})
it('should modify text assets', async () => {
const scriptMock = await browser.mock('**' + '/script.min.js')
scriptMock.respond('./tests/fixtures/script.js')
})
it('should redirect web resources', async () => {
const headerMock = await browser.mock('**' + '/header.png')
headerMock.respond('https://media.giphy.com/media/F9hQLAVhWnL56/giphy.gif')
const pageMock = await browser.mock('https://google.com/')
pageMock.respond('https://webdriver.io')
await browser.url('https://google.com')
console.log(await browser.getTitle()) // returns "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js"
})
* </example>
*
* @alias browser.mock
* @param {String} url url to mock
* @param {MockFilterOptions=} filterOptions filter mock resource by additional options
* @param {String|Function=} filterOptions.method filter resource by HTTP method
* @param {Object|Function=} filterOptions.requestHeaders filter resource by specific request headers
* @param {Object|Function=} filterOptions.responseHeaders filter resource by specific response headers
* @param {String|Function=} filterOptions.postData filter resource by request postData
* @param {Number|Function=} filterOptions.statusCode filter resource by response statusCode
* @return {Mock} a mock object to modify the response
* @type utility
*
*/
export declare function mock(this: WebdriverIO.Browser, url: string, filterOptions?: MockFilterOptions): Promise<WebdriverIO.Mock>;
//# sourceMappingURL=mock.d.ts.map