Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,16 @@ export class SentienceBrowser {
constructor(
apiKey?: string,
apiUrl?: string,
headless: boolean = false
headless?: boolean
) {
this._apiKey = apiKey;
this.headless = headless;
// Default to headless=True in CI (no X server), headless=False locally
if (headless === undefined) {
const ci = process.env.CI?.toLowerCase();
this.headless = ci === 'true' || ci === '1' || ci === 'yes';
} else {
this.headless = headless;
}
// Only set apiUrl if apiKey is provided, otherwise undefined (free tier)
// Default to https://api.sentienceapi.com if apiKey is provided but apiUrl is not
if (apiKey) {
Expand Down
8 changes: 4 additions & 4 deletions tests/generator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { createTestBrowser } from './test-utils';

describe('ScriptGenerator', () => {
it('should generate Python code', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -37,7 +37,7 @@ describe('ScriptGenerator', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should generate TypeScript code', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -63,7 +63,7 @@ describe('ScriptGenerator', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should save Python script', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -90,7 +90,7 @@ describe('ScriptGenerator', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should save TypeScript script', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand Down
2 changes: 1 addition & 1 deletion tests/inspector.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { createTestBrowser } from './test-utils';

describe('Inspector', () => {
it('should start and stop', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand Down
10 changes: 5 additions & 5 deletions tests/recorder.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { createTestBrowser } from './test-utils';

describe('Recorder', () => {
it('should start and stop', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -29,7 +29,7 @@ describe('Recorder', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should record click events', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -53,7 +53,7 @@ describe('Recorder', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should record type events', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -77,7 +77,7 @@ describe('Recorder', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should mask sensitive text', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -99,7 +99,7 @@ describe('Recorder', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should save and load trace', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand Down
4 changes: 2 additions & 2 deletions tests/snapshot.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { createTestBrowser } from './test-utils';

describe('Snapshot', () => {
it('should take a basic snapshot', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand All @@ -25,7 +25,7 @@ describe('Snapshot', () => {
}, 60000); // 60 seconds - browser startup can be slow

it('should have valid element structure', async () => {
const browser = await createTestBrowser(false);
const browser = await createTestBrowser();

try {
await browser.getPage().goto('https://example.com');
Expand Down
3 changes: 2 additions & 1 deletion tests/stealth.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ describe('Stealth Mode / Bot Evasion', () => {
let browser: SentienceBrowser;

beforeAll(async () => {
browser = new SentienceBrowser(undefined, undefined, false);
// Auto-detect headless mode (headless in CI, headed locally)
browser = new SentienceBrowser(undefined, undefined, undefined);
await browser.start();
});

Expand Down
3 changes: 2 additions & 1 deletion tests/test-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import { SentienceBrowser } from '../src';

/**
* Creates a browser instance and starts it with better error handling
* Auto-detects headless mode based on CI environment (headless in CI, headed locally)
*/
export async function createTestBrowser(headless: boolean = false): Promise<SentienceBrowser> {
export async function createTestBrowser(headless?: boolean): Promise<SentienceBrowser> {
const browser = new SentienceBrowser(undefined, undefined, headless);
try {
await browser.start();
Expand Down
Loading