Skip to content
Vitest 2
Main Navigation ÚtmutatóAPIKonfigurációBöngésző módHaladó
3.2.0
2.1.9
1.6.1
0.34.6

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

Why Browser Mode?

Getting Started

Context API

Interactivity API

Locators

Assertion API

Commands API

Ezen az oldalon

Parancsok ​

A parancs egy olyan függvény, amely egy másik függvényt hív meg a szerveren, és az eredményt visszaküldi a böngészőbe. A Vitest számos beépített parancsot kínál, amelyeket használhatsz a böngésző tesztjeidben.

Beépített parancsok ​

Fájlkezelés ​

A readFile, writeFile és removeFile API-kat használhatod a fájlok kezelésére a böngésző tesztjeidben. Minden elérési út a tesztfájlhoz képest relatív, még akkor is, ha egy másik fájlban található segédfüggvényből hívják meg őket.

Alapértelmezetten a Vitest utf-8 kódolást használ, de ezt az opciókkal felülírhatod.

TIP

Ez az API biztonsági okokból betartja a server.fs korlátozásait.

ts
import { server } from '@vitest/browser/context';

const { readFile, writeFile, removeFile } = server.commands;

it('handles files', async () => {
  const file = './test.txt';

  await writeFile(file, 'hello world');
  const content = await readFile(file);

  expect(content).toBe('hello world');

  await removeFile(file);
});

CDP munkamenet ​

A Vitest hozzáférést biztosít a nyers Chrome Devtools Protokollhoz a @vitest/browser/context modulból exportált cdp metódussal. Ez leginkább a könyvtárfejlesztők számára hasznos, akik eszközöket építenek rá.

ts
import { cdp } from '@vitest/browser/context';

const input = document.createElement('input');
document.body.appendChild(input);
input.focus();

await cdp().send('Input.dispatchKeyEvent', {
  type: 'keyDown',
  text: 'a',
});

expect(input).toHaveValue('a');

WARNING

A CDP munkamenet csak a playwright szolgáltatóval használható, és csak akkor, ha a chromium böngészőt használod. Erről bővebben olvashatsz a playwright CDPSession dokumentációjában.

Egyéni parancsok ​

Saját parancsokat is hozzáadhatsz a browser.commands konfigurációs opció segítségével. Ha egy könyvtárat fejlesztesz, ezeket egy pluginon belüli config hookon keresztül is elérhetővé teheted:

ts
import type { Plugin } from 'vitest/config';
import type { BrowserCommand } from 'vitest/node';

const myCustomCommand: BrowserCommand<[arg1: string, arg2: string]> = (
  { testPath, provider },
  arg1,
  arg2
) => {
  if (provider.name === 'playwright') {
    console.log(testPath, arg1, arg2);
    return { someValue: true };
  }

  throw new Error(`provider ${provider.name} is not supported`);
};

export default function BrowserCommands(): Plugin {
  return {
    name: 'vitest:custom-commands',
    config() {
      return {
        test: {
          browser: {
            commands: {
              myCustomCommand,
            },
          },
        },
      };
    },
  };
}

Ezután meghívhatod a tesztedben, a @vitest/browser/context modulból importálva:

ts
import { commands } from '@vitest/browser/context';
import { expect, test } from 'vitest';

test('custom command works correctly', async () => {
  const result = await commands.myCustomCommand('test1', 'test2');
  expect(result).toEqual({ someValue: true });
});

// if you are using TypeScript, you can augment the module
declare module '@vitest/browser/context' {
  interface BrowserCommands {
    myCustomCommand: (
      arg1: string,
      arg2: string
    ) => Promise<{
      someValue: true;
    }>;
  }
}

WARNING

Az egyéni függvények felülírják a beépített függvényeket, ha ugyanaz a nevük.

Egyéni playwright parancsok ​

A Vitest számos playwright specifikus tulajdonságot kínál a parancs kontextusán.

  • page: a teljes oldalt jelenti, amely tartalmazza a teszt iframe-et. Ez az orchestrátor HTML, és valószínűleg nem szabad hozzányúlnod, hogy ne törjön el semmi.
  • frame: egy aszinkron metódus, amely visszaadja a tesztelő Frame objektumot. Hasonló API-val rendelkezik, mint a page, de bizonyos metódusokat nem támogat. Ha egy elemet szeretnél lekérdezni, inkább a context.iframe-et használd, mert stabilabb és gyorsabb.
  • iframe: egy FrameLocator, amelyet más elemek lekérdezésére használhatsz az oldalon.
  • context: az egyedi BrowserContext objektumot jelenti.
ts
import { BrowserCommand } from 'vitest/node';

export const myCommand: BrowserCommand<[string, number]> = async (
  ctx,
  arg1: string,
  arg2: number
) => {
  if (ctx.provider.name === 'playwright') {
    const element = await ctx.iframe.findByRole('alert');
    const screenshot = await element.screenshot();
    // do something with the screenshot
    return difference;
  }
};

TIP

Ha TypeScript-et használsz, ne felejtsd el hozzáadni a @vitest/browser/providers/playwright modult a tsconfig "compilerOptions.types" mezőjéhez az automatikus kiegészítéshez a konfigurációban, valamint a userEvent és page opciók esetében:

json
{
  "compilerOptions": {
    "types": ["@vitest/browser/providers/playwright"]
  }
}

Egyéni webdriverio parancsok ​

A Vitest néhány webdriverio specifikus tulajdonságot kínál a kontextus objektumon.

  • browser: a WebdriverIO.Browser API-t jelenti.

A Vitest automatikusan átváltja a webdriver kontextust a teszt iframe-re a browser.switchToFrame hívásával a parancs meghívása előtt. Így a $ és $$ metódusok az iframe-en belüli elemekre hivatkoznak, nem az orchestrátorban lévőkre. A nem webdriver API-k azonban továbbra is a szülő frame kontextusára hivatkoznak.

TIP

Ha TypeScript-et használsz, ne felejtsd el hozzáadni a @vitest/browser/providers/webdriverio modult a tsconfig "compilerOptions.types" mezőjéhez az automatikus kiegészítéshez:

json
{
  "compilerOptions": {
    "types": ["@vitest/browser/providers/webdriverio"]
  }
}
Pager
Előző oldalAssertion API

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://v2.vitest.dev/guide/browser/commands

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team