Some checks failed
Test / rust-fmt-check (pull_request) Failing after 0s
Test / rust-clippy (pull_request) Failing after 1s
Test / rust-tests (pull_request) Failing after 0s
Test / frontend-typecheck (pull_request) Failing after 16s
Test / frontend-tests (pull_request) Failing after 18s
PR Review Automation / review (pull_request) Failing after 4m13s
Complete backport of all features from apollo_nxt-trcaa repository: - Three-tier shell execution safety system (Tier 1: auto, Tier 2: approve, Tier 3: deny) - Ollama function calling with tool use support - AI provider tool calling auto-detection - kubectl binary bundling and management - kubeconfig upload and context management - Shell approval modal with real-time UI - MCP protocol HTTP transport with custom headers - Enhanced security audit logging - Comprehensive test coverage (275+ tests) - Updated CI/CD workflows for Gitea Actions - Complete documentation (ADRs, wiki, release notes) Sanitization applied to all files: - Removed all MSI, Motorola, VNXT, Vesta references - Replaced internal infrastructure references with TFTSR equivalents - Updated all URLs and API endpoints - Sanitized commit history references in documentation Technical changes: - New modules: shell/classifier, shell/executor, shell/kubectl, shell/kubeconfig - Enhanced AI providers: ollama.rs, openai.rs with function calling - New Tauri commands: shell execution, kubeconfig management, tool calling detection - Database migrations: shell_execution_audit table - Frontend: ShellApprovalModal, ShellExecution, KubeconfigManager pages - CI/CD: kubectl bundling, multi-platform builds, Gitea Actions integration Version: 1.0.8 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
30 lines
761 B
TypeScript
30 lines
761 B
TypeScript
export async function waitForApp(timeout = 10000) {
|
|
await browser.waitUntil(
|
|
async () => {
|
|
try {
|
|
const title = await browser.getTitle();
|
|
return title.includes("TRCAA");
|
|
} catch {
|
|
return false;
|
|
}
|
|
},
|
|
{ timeout, timeoutMsg: "TRCAA app did not load within timeout" }
|
|
);
|
|
}
|
|
|
|
export async function clickByText(text: string) {
|
|
const el = await browser.$(`*=${text}`);
|
|
await el.waitForDisplayed({ timeout: 5000 });
|
|
await el.click();
|
|
}
|
|
|
|
export async function findByTestId(testId: string) {
|
|
return browser.$(`[data-testid="${testId}"]`);
|
|
}
|
|
|
|
export async function typeInto(selector: string, text: string) {
|
|
const el = await browser.$(selector);
|
|
await el.click();
|
|
await browser.keys(text.split(""));
|
|
}
|