typescript - Zakázať časový limit vitest pri ladení vo vscode


Pri práci na teste ho môžem spustiť a spúšťať znova 100-krát, pričom prechádzam krok za krokom v režime ladenia, refaktorujem a znovu kontrolujem určité veci, ale predvolená doba timeoutu vitestu je iba 5 s, a rozšírenie vitestu nemá žiadnu možnosť (ktorú by som videl), ktorá by umožnila nastaviť hodnotu test-timeout/testTimeout vitestu - alebo ju ignorovať, keď je v premenných prostredia nastavené VSCODE_INSPECTOR_OPTIONS.

Moje preferované spôsoby, ako debuggovať test, sú kliknúť naň pravým tlačidlom myši a zvoliť „Debug test“,

A používam oficiálne rozšírenie vitest pre vscode - https://marketplace.visualstudio.com/items?itemName=vitest.explorer

Našiel som niekoľko možností, ktoré fungujú, prvá je v podstate znovu urobiť ich test v súbore helper.js takto,

import { TestOptions, test as _test } from "vitest";

export function test(name: string, fn: any): void {
  const options: TestOptions = {};
  if (process.env.VSCODE_INSPECTOR_OPTIONS) {
    options.timeout = 999999;
  }
  return _test(name, options, fn);
}

Nepáči sa mi to, pretože je to chaotická zbytočná funkcia, kde importujem test z helper namiesto z vitest.

Druhý je v triede runner, kde nastavujem časový limit v konfigurácii takto,

import { describe, expect, it } from "vitest";
import { rebuildLeaderboardScores } from "../lib/leaderboard";

const options = {
  timeout: process.env.VSCODE_INSPECTOR_OPTIONS ? 999999 : 5000,
};

describe("leaderboard functions test set", options, () => {
  it("rebuilding leaderboard attempt that doesn't exist fails", () => {
    expect(() => rebuildLeaderboardScores("1")).toThrowError(/leaderboard/);
  });
});

Opäť, toto funguje dobre, ale buď musím mať túto možnosť v každom testovacom súbore, alebo zasa v pomocnom súbore a importovať ju, čo považujem za neporiadok a radšej by som sa tomu vyhol.

Posledný, pravdepodobne najvhodnejší spôsob, ktorý som našiel, je rozšíriť svoj predvolený vitest.config a nastaviť tam test.testTimeout takto,

import config from "./vitest.config";

config.test!.testTimeout = 999999;

export default config;

A potom v konfigurácii pluginu odkazujte na tento súbor namiesto vášho štandardného konfiguračného súboru. Myslím, že je to najvhodnejšia možnosť, ale stále mám pocit, že existuje ešte nejaká ďalšia možnosť alebo nastavenie, ktoré mi ušlo a ktoré by bolo lepšie. Stále to vlastne neodstraňuje časový limit a stále to pridáva malú časť režijných nákladov z hľadiska ďalšieho súboru a jeho údržby.

Viem, že existujú niektoré spôsoby, ako nastaviť test-timeout cez CLI, ale ani to sa zjavne nezdá fungovať správne, keď ladím tak, ako to robím ja.

Problém s oboma je, že táto premenná timeout bude prítomná pre každý testovací beh vo vscode, nielen pre tie, ktoré sú debugované/nie keď je nastavené VSCODE_INSPECTOR_OPTIONS.