Skip to main content

Demo Test Run

Watch this test execute in a real sandbox environment:

Source Code

exec-pwsh.test.mjs
/**
 * TestDriver SDK - Exec Shell Test (Vitest)
 * Converted from: testdriver/acceptance/exec-shell.yaml
 */

import { describe, expect, it } from "vitest";
import { TestDriver } from "../lib/vitest/hooks.mjs";
import { getDefaults } from "./config.mjs";

describe.skip("Exec PowerShell Test", () => {
  it(
    "should generate random email using PowerShell and enter it",
    async (context) => {
      const testdriver = TestDriver(context, { ...getDefaults(context), headless: true });
      await testdriver.provision.chrome({ url: 'http://testdriver-sandbox.vercel.app/login' });

      //
      // Generate random email using PowerShell
      const randomEmail = await testdriver.exec({
        language: "pwsh",
        code: `
# Random email generator in PowerShell

# Arrays of possible names and domains
$firstNames = @("john", "jane", "alex", "chris", "sara", "mike", "lisa", "david", "emma", "ryan")
$lastNames = @("smith", "johnson", "williams", "brown", "jones", "garcia", "miller", "davis", "martin", "lee")
$domains = @("example.com", "testmail.com", "mailinator.com", "demo.org", "company.net")

# Random selection
$first = Get-Random -InputObject $firstNames
$last = Get-Random -InputObject $lastNames
$domain = Get-Random -InputObject $domains
$number = Get-Random -Minimum 1 -Maximum 1000

# Generate the email
$email = "$first.$last$number@$domain".ToLower()

# Output
Write-Output "$email"
    `,
        timeout: 10000,
      });

      // Enter the email in username field
      const usernameField = await testdriver.find(
        "Username, input field for username",
      );
      await usernameField.click();
      await testdriver.type(randomEmail);

      // Assert that the username field shows a valid email address
      const result = await testdriver.assert(
        `the username field contains ${randomEmail} which is a valid email address`,
      );
      expect(result).toBeTruthy();
    },
  );
});