/** @odoo-module */ import { Component, useState, xml } from "@odoo/owl"; import { createUrl } from "../core/url"; import { useWindowListener } from "../hoot_utils"; import { HootButtons } from "./hoot_buttons"; import { HootConfigDropdown } from "./hoot_config_dropdown"; import { HootDebugToolBar } from "./hoot_debug_toolbar"; import { HootPresets } from "./hoot_presets"; import { HootReporting } from "./hoot_reporting"; import { HootSearch } from "./hoot_search"; import { HootSideBar } from "./hoot_side_bar"; import { HootStatusPanel } from "./hoot_status_panel"; /** * @typedef {{ * }} HootMainProps */ //----------------------------------------------------------------------------- // Global //----------------------------------------------------------------------------- const { setTimeout } = globalThis; //----------------------------------------------------------------------------- // Exports //----------------------------------------------------------------------------- /** @extends {Component} */ export class HootMain extends Component { static components = { HootButtons, HootConfigDropdown, HootDebugToolBar, HootPresets, HootReporting, HootSearch, HootSideBar, HootStatusPanel, }; static props = {}; static template = xml`
Running in headless mode Run with UI
`; createUrl = createUrl; escapeKeyPresses = 0; setup() { const { runner } = this.env; this.state = useState({ debugTest: null, }); runner.beforeAll(() => { if (!runner.debug) { return; } if (runner.debug === true) { this.state.debugTest = runner.state.tests[0]; } else { this.state.debugTest = runner.debug; } }); runner.afterAll(() => { this.state.debugTest = null; }); useWindowListener("keydown", (ev) => this.onWindowKeyDown(ev)); useWindowListener("resize", (ev) => this.onWindowResize(ev)); } /** * @param {KeyboardEvent} ev */ onWindowKeyDown(ev) { const { runner } = this.env; switch (ev.key) { case "d": { if (ev.altKey) { ev.preventDefault(); runner.config.debugTest = !runner.config.debugTest; } break; } case "Enter": { if (runner.state.status === "ready") { ev.preventDefault(); runner.start(); } break; } case "Escape": { this.escapeKeyPresses++; setTimeout(() => this.escapeKeyPresses--, 500); if (ev.ctrlKey && runner.config.debugTest) { runner.config.debugTest = false; } if (runner.state.status === "running" && this.escapeKeyPresses >= 2) { ev.preventDefault(); runner.stop(); } break; } } } onWindowResize() { this.env.runner.checkPresetForViewPort(); } }