An informal specification to describe the basic properties of a browser (in the broadest sense) as well as the features it wants and supports. Includes some code for validating and normalizing a manifest.
manifest = {
name: 'chrome',
version: '26',
platform: 'windows 2012',
title: 'Sauce Labs Google Chrome 26 on Windows 2012',
wants: {
tunnel: true
},
supports: {
headless: false
}
}
Required, one of browser-names
. Must be a non-empty, lowercase string.
Optional but recommended. If defined, it must be a non-empty string. Does not have to be fully qualified, as long as the version is unique among a set of browsers with the same properties. May also be a non-numeric prerelease version like "beta" or "dev". Examples:
6
13.2
11.00.18362.1
(IE)80.0a1
(Firefox Nightly)beta
Optional but recommended. A string for display purposes, for humans to identify this browser among others. Examples:
Sauce Labs Google Chrome 27 on Mac 10.12
Playwright Firefox
System ie 11.00.18362.1
An optional object describing (airtap) features that a browser wants, by the following optional properties:
tunnel
(boolean): browser needs a tunnel to connect to local test serverloopback
(boolean): browser needs a hostname other thanlocalhost
in order to route 127.0.0.1 traffic through a tunnelsecureEnv
(boolean): browser needs secure environment variables in CI (and is consequently not available on pull requests from forks).
An optional object describing features supported by a browser, by the following optional properties:
headless
(boolean): browser can be configured to be headless (TBD: is this distinct from a rootheadless
property that would indicate that the browser is always or never headless?)concurrency
(boolean, default true): browser can be executed concurrently with others (or other versions of itself)
An optional object with arbitrary properties that exists to customize the browser behavior. Define defaults here, to communicate available options. The options
property is ignored in airtap-match-browsers
.
Name of the browser-provider
that provided this manifest. Not necessary to set, handled internally by Airtap 4.
The manifest may contain additional properties not described here, including nested objects. Such properties can be used by whatever tool launches a browser and by airtap-match-browsers
for more specific matching.
const bm = require('browser-manifest')
// Validates and normalizes
const manifest = bm({
name: 'chrome',
version: '27'
})
// Adds a few defaults
console.log(manifest.wants) // {}
console.log(manifest.supports) // {}
console.log(manifest.options) // {}
With npm do:
npm install browser-manifest
MIT © 2020-present Airtap contributors.