Skip to content

Latest commit

 

History

History
102 lines (73 loc) · 2.19 KB

File metadata and controls

102 lines (73 loc) · 2.19 KB

Getting Started

Prerequisites

Ensure the appropriate browser driver is in your PATH.

macOS/Linux:

npm i -g chromedriver

Windows: Download chromedriver from chromedriver.chromium.org and add to PATH.

Installation

npm install craftdriver

Your First Test

import { Browser } from 'craftdriver';

async function main() {
  // Launch browser
  const browser = await Browser.launch({ browserName: 'chrome' });

  try {
    // Navigate to a page
    await browser.navigateTo('https://example.com');

    // Get page title
    const title = await browser.title();
    console.log('Page title:', title);

    // Click a link
    await browser.click('a');

    // Fill a form
    await browser.fill('#email', 'test@example.com');
    await browser.click('#submit');

    // Assert result
    await browser.expect('#message').toHaveText('Success!');
  } finally {
    await browser.quit();
  }
}

main();

Launch Options

const browser = await Browser.launch({
  // Browser type
  browserName: 'chrome', // 'chrome' | 'chromium'

  // Enable WebDriver BiDi for advanced features
  enableBiDi: true,

  // Pre-load saved session state (cookies, localStorage)
  storageState: './session.json',
});

With Vitest

import { describe, it, beforeEach, afterEach } from 'vitest';
import { Browser } from 'craftdriver';

describe('My App', () => {
  let browser: Browser;

  beforeEach(async () => {
    browser = await Browser.launch({ browserName: 'chrome' });
  });

  afterEach(async () => {
    await browser.quit();
  });

  it('shows welcome message after login', async () => {
    await browser.navigateTo('http://localhost:3000/login');
    await browser.fill('#username', 'testuser');
    await browser.fill('#password', 'password123');
    await browser.click('#login-btn');

    await browser.expect('#welcome').toContainText('Hello, testuser');
  });
});

Next Steps