t.browser Property

Returns information about the active browser, its user agent string, and the current automation mode.

t.browser → Object
import { Selector } from 'testcafe';

fixture`TestController.browser`
    .page`https://example.com`;

test('Check browser', async t => {
    if (t.browser.name !== 'Chrome')
        await t.expect(Selector('div').withText('Browser not supported').visible).ok();
});

t.browser exposes the following properties:

Property Type Description Example
alias String The browser alias string from launch settings firefox:headless
name String Browser name Chrome
version String Browser version 77.0.3865.120
platform String Browser platform desktop
headless Boolean true if the browser is headless false
os Object Name and version of the OS { name: 'macOS', version: '10.15.1' }
engine Object Name and version of the browser engine { name: 'Gecko', version: '20100101' }
userAgent String User agent string Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/77.0.3865.120 Safari/537.36
prettyUserAgent String Formatted string with the name and version of the browser and operating system. Chrome 77.0.3865.75 / macOS 10.14.0
nativeAutomation Boolean true if TestCafe uses native automation false

Properties

alias

The browser alias string specified on launch.

For local browsers, the property contains the short browser name:

{
    alias: 'chrome'
}

For portable browsers, the property contains the path to the browser executable:

{
    alias: 'path:C:\Program Files (x86)\Firefox Portable\firefox.exe'
}

The string includes browser mode suffixes (:headless, :emulation, etc.) and CLI parameters:

{
    alias: 'chrome:headless --no-sandbox'
}
{
    alias: 'firefox:headless:disableMultiprocessing=true'
}

If you use a browser provider plugin to access a cloud browser, the alias property includes browser settings:

{
    alias: 'saucelabs:Samsung Galaxy S9 Plus WQHD GoogleAPI Emulator@8.1'
}

name

The short browser name.

{
    name: 'Safari'
}
{
    name: 'Google Chrome'
}

If TestCafe did not detect the browser on launch, the property value is 'Other'.

version

The browser version.

{
    name: 'Chrome',
    version: '77.0.3865.120'
}
{
    name: 'Firefox',
    version: '69.0'
}

If TestCafe cannot determine the browser version, the property value is '0.0'.

platform

The platform property indicates the kind of device that runs the browser. It has one of the following values:

  • desktop
  • mobile
  • tablet
  • other (indicates other devices, or a failure to detect the device)
{
    name: 'Firefox',
    platform: 'mobile'
}

headless

The headless property indicates whether the browser is headless.

{
    alias: 'chrome:headless',
    name: 'Chrome',
    headless: true
}

os

Contains the operating system’s name and version.

{
    os: {
        name: 'Windows',
        version: '10'
    }
}

If TestCafe cannot detect the operating system, the property’s value is 'Other'. The version parameter defaults to '0.0'.

engine

Contains the browser engine’s name and version.

{
    engine: {
        name: 'WebKit',
        version: '605.1.15'
    }
}

If TestCafe cannot detect the browser engine, the value of the engine.name property is 'Other'. The engine.version property defaults to '0.0'.

userAgent

The user agent string.

{
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/77.0.3865.120 Safari/537.36'
}

prettyUserAgent

Contains both the name and version of both the browser and the OS. TestCafe displays this string on the loading screen and in the status bar.

{
    prettyUserAgent: 'Firefox 69.0 / Windows 10'
}
{
    prettyUserAgent: 'Chrome 77.0.3865.120 / macOS 10.15.1'
}

If TestCafe cannot parse the browser’s user agent string, the property is empty.

nativeAutomation

The nativeAutomation property indicates whether TestCafe uses Native Automation to control the browser.

{
    prettyUserAgent: 'Chrome 77.0.3865.120 / macOS 10.15.7',
    nativeAutomation: true
}

To make sure that you always use your preferred automation method, check the browser’s native automation status before you start the test:

import { Selector } from 'testcafe';

fixture`TestController.browser`
    .page`https://example.com`;

test('Native automation check', async t => {
    await t.expect(t.browser.nativeAutomation).ok();
    //the test continues only if you use native automation
});