Ensure the appropriate browser driver is in your PATH.
macOS/Linux:
npm i -g chromedriverWindows: Download chromedriver from chromedriver.chromium.org and add to PATH.
npm install craftdriverimport { 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();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',
});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');
});
});- Browser API - Full browser control reference
- Selectors - Finding elements with CSS, XPath, and semantic locators
- Session Management - Save/restore login sessions