Skip to content
Vitest 3
Main Navigation 指南 & API配置瀏覽器模式進階 API
3.2.0
2.1.9
1.6.1
0.34.6

繁體中文

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
magyar

外觀

Sidebar Navigation

簡介

為何採用瀏覽器模式

瀏覽器模式

配置

瀏覽器配置參考

配置 Playwright

配置 WebdriverIO

API

Context API

互動 API

定位器

斷言 API

命令 API

指南

多重設定

配置參考

測試 API 參考

進階 API

本頁導覽

Context API ​

Vitest 透過 @vitest/browser/context 入口點公開了一個 Context 模組。截至 2.0 版,它提供了一組在測試中可能對您有所助益的實用工具。

userEvent ​

TIP

userEvent API 在互動性 API 中有詳細說明。

ts
/**
 * 處理使用者互動。支援由瀏覽器提供者(`playwright` 或 `webdriverio`)實作。
 * 如果與 `preview` 提供者一起使用,則會退回到透過 `@testing-library/user-event` 模擬事件。
 * @experimental
 */
export const userEvent: {
  setup: () => UserEvent;
  cleanup: () => Promise<void>;
  click: (element: Element, options?: UserEventClickOptions) => Promise<void>;
  dblClick: (
    element: Element,
    options?: UserEventDoubleClickOptions
  ) => Promise<void>;
  tripleClick: (
    element: Element,
    options?: UserEventTripleClickOptions
  ) => Promise<void>;
  selectOptions: (
    element: Element,
    values: HTMLElement | HTMLElement[] | string | string[],
    options?: UserEventSelectOptions
  ) => Promise<void>;
  keyboard: (text: string) => Promise<void>;
  type: (
    element: Element,
    text: string,
    options?: UserEventTypeOptions
  ) => Promise<void>;
  clear: (element: Element) => Promise<void>;
  tab: (options?: UserEventTabOptions) => Promise<void>;
  hover: (element: Element, options?: UserEventHoverOptions) => Promise<void>;
  unhover: (element: Element, options?: UserEventHoverOptions) => Promise<void>;
  fill: (
    element: Element,
    text: string,
    options?: UserEventFillOptions
  ) => Promise<void>;
  dragAndDrop: (
    source: Element,
    target: Element,
    options?: UserEventDragAndDropOptions
  ) => Promise<void>;
};

commands ​

TIP

此 API 在 Commands API 中有詳細說明。

ts
/**
 * 瀏覽器可用的指令。
 * `server.commands` 的快捷方式。
 */
export const commands: BrowserCommands;

page ​

page 匯出提供了與當前 page 互動的工具。

WARNING

雖然它公開了 Playwright page 的一些工具,但它並不是同一個物件。由於瀏覽器 Context 是在瀏覽器中評估的,您的測試無法存取 Playwright 的 page,因為它在伺服器上執行。

如果您需要存取 Playwright 的 page 物件,請使用 Commands API。

ts
export const page: {
  /**
   * 更改 iframe 視窗的大小。
   */
  viewport(width: number, height: number): Promise<void>;
  /**
   * 擷取測試 iframe 或特定元素的螢幕截圖。
   * @returns 螢幕截圖檔案的路徑或路徑和 base64。
   */
  screenshot(
    options: Omit<ScreenshotOptions, 'base64'> & { base64: true }
  ): Promise<{
    path: string;
    base64: string;
  }>;
  screenshot(options?: ScreenshotOptions): Promise<string>;
  /**
   * 使用自訂方法擴展預設的 `page` 物件。
   */
  extend(methods: Partial<BrowserPage>): BrowserPage;
  /**
   * 將 HTML 元素封裝於 `Locator` 中。查詢元素時,搜尋將始終返回此元素。
   */
  elementLocator(element: Element): Locator;

  /**
   * Locator API。詳情請參閱其文件。
   */
  getByRole(role: ARIARole | string, options?: LocatorByRoleOptions): Locator;
  getByLabelText(text: string | RegExp, options?: LocatorOptions): Locator;
  getByTestId(text: string | RegExp): Locator;
  getByAltText(text: string | RegExp, options?: LocatorOptions): Locator;
  getByPlaceholder(text: string | RegExp, options?: LocatorOptions): Locator;
  getByText(text: string | RegExp, options?: LocatorOptions): Locator;
  getByTitle(text: string | RegExp, options?: LocatorOptions): Locator;
};

TIP

getBy* API 在 Locators API 中有詳細說明。

警告 3.2.0+

請注意,如果 save 設定為 false,screenshot 將始終返回 base64 字串。 在這種情況下,path 也會被忽略。

cdp ​

cdp 匯出返回當前的 Chrome 開發者工具協定 (CDP) 工作階段。它主要用於函式庫作者在其之上建構工具。

WARNING

CDP 工作階段僅適用於 playwright 提供者,並且僅在使用 chromium 瀏覽器時。您可以在 playwright 的 CDPSession 文件中閱讀更多相關資訊。

ts
export const cdp: () => CDPSession;

server ​

server 匯出代表 Vitest 伺服器正在執行的 Node.js 環境。它主要用於除錯或根據環境限制您的測試。

ts
export const server: {
  /**
   * Vitest 伺服器執行的平台。
   * 與在伺服器上呼叫 `process.platform` 相同。
   */
  platform: Platform;
  /**
   * Vitest 伺服器的運行時版本。
   * 與在伺服器上呼叫 `process.version` 相同。
   */
  version: string;
  /**
   * 瀏覽器提供者的名稱。
   */
  provider: string;
  /**
   * 當前瀏覽器的名稱。
   */
  browser: string;
  /**
   * 瀏覽器可用的指令。
   */
  commands: BrowserCommands;
  /**
   * 序列化後的測試配置。
   */
  config: SerializedConfig;
};
Pager
上一頁配置 WebdriverIO
下一頁互動 API

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team

https://vitest.dev/guide/browser/context

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team