The act() method allows you to execute complex tasks using natural language descriptions. TestDriver’s AI will figure out the steps needed to accomplish the task.
// Simple task executionawait testdriver.act('Click the submit button');// Complex multi-step taskawait testdriver.act('Fill out the contact form and submit it');// Navigation taskawait testdriver.act('Go to the settings page and enable notifications');
// AI will verify the task completed successfullyconst result = await testdriver.act('Complete the checkout process', { validateAndLoop: true});console.log('Task result:', result);
// The AI will break down complex tasksawait testdriver.act('Search for "laptop", add the first result to cart, and proceed to checkout');// UI explorationawait testdriver.act('Find and click all menu items to explore the application');
Be specific but flexible: Give enough context without over-constraining the AI
Copy
// ✅ Goodawait testdriver.act('Add the first product to the shopping cart');// ❌ Too vagueawait testdriver.act('do something');// ❌ Too specific (defeats the purpose)await testdriver.act('click at coordinates 500, 300');
Use for exploration, not precision: For critical assertions, use explicit methods
Copy
// Use AI for setupawait testdriver.act('Navigate to the login page');// Use explicit methods for critical stepsconst usernameField = await testdriver.find('username input');await usernameField.click();await testdriver.type('testuser');await testdriver.assert('login page is displayed');
AI tasks may be slower: The AI needs to analyze the screen and plan actions. For performance-critical tests, use explicit methods.
import { beforeAll, afterAll, describe, it } from 'vitest';import TestDriver from 'testdriverai';describe('E-commerce Flow with AI', () => { let testdriver; beforeAll(async () => { client = new TestDriver(process.env.TD_API_KEY); await testdriver.auth(); await testdriver.connect({ newSandbox: true }); }); afterAll(async () => { await testdriver.disconnect(); }); it('should complete shopping flow using AI assistance', async () => { await testdriver.focusApplication('Google Chrome'); // Use AI for navigation and exploration await testdriver.act('Browse to the electronics section'); await testdriver.act('Find and add a laptop to the cart'); // Use explicit methods for critical steps const cartIcon = await testdriver.find('shopping cart icon'); await cartIcon.click(); const total = await testdriver.remember('the cart total amount'); console.log('Cart total:', total); // Use AI for checkout flow await testdriver.act('Proceed to checkout and fill in shipping details', { validateAndLoop: true }); // Explicit assertion await testdriver.assert('order confirmation page is displayed'); });});