text: exports['undefined browsers'] = `
  Missing browsers list
  `
  
  exports['empty list of browsers'] = `
  Expected at least one browser
  `
  
  exports['browsers list with a string'] = {
    "key": "name",
    "value": "foo",
    "type": "a non-empty string",
    "list": "browsers"
  }
  
  exports['src/validation .isValidBrowser passes valid browsers and forms error messages for invalid ones isValidBrowser 1'] = {
    "name": "isValidBrowser",
    "behavior": [
      {
        "given": {
          "name": "Chrome",
          "displayName": "Chrome Browser",
          "family": "chromium",
          "path": "/path/to/chrome",
          "version": "1.2.3",
          "majorVersion": 1
        },
        "expect": true
      },
      {
        "given": {
          "name": "FF",
          "displayName": "Firefox",
          "family": "firefox",
          "path": "/path/to/firefox",
          "version": "1.2.3",
          "majorVersion": "1"
        },
        "expect": true
      },
      {
        "given": {
          "name": "Electron",
          "displayName": "Electron",
          "family": "chromium",
          "path": "",
          "version": "99.101.3",
          "majorVersion": 99
        },
        "expect": true
      },
      {
        "given": {
          "name": "No display name",
          "family": "chromium"
        },
        "expect": {
          "key": "displayName",
          "value": {
            "name": "No display name",
            "family": "chromium"
          },
          "type": "a non-empty string"
        }
      },
      {
        "given": {
          "name": "bad family",
          "displayName": "Bad family browser",
          "family": "unknown family"
        },
        "expect": {
          "key": "family",
          "value": {
            "name": "bad family",
            "displayName": "Bad family browser",
            "family": "unknown family"
          },
          "type": "either chromium or firefox"
        }
      }
    ]
  }
  
  exports['not one of the strings error message'] = {
    "key": "test",
    "value": "nope",
    "type": "one of these values: \"foo\", \"bar\""
  }
  
  exports['number instead of string'] = {
    "key": "test",
    "value": 42,
    "type": "one of these values: \"foo\", \"bar\""
  }
  
  exports['null instead of string'] = {
    "key": "test",
    "value": null,
    "type": "one of these values: \"foo\", \"bar\""
  }
  
  exports['not one of the numbers error message'] = {
    "key": "test",
    "value": 4,
    "type": "one of these values: 1, 2, 3"
  }
  
  exports['string instead of a number'] = {
    "key": "test",
    "value": "foo",
    "type": "one of these values: 1, 2, 3"
  }
  
  exports['null instead of a number'] = {
    "key": "test",
    "value": null,
    "type": "one of these values: 1, 2, 3"
  }
  
  exports['src/validation .isStringOrFalse returns error message when value is neither string nor false 1'] = {
    "key": "mockConfigKey",
    "value": null,
    "type": "a string or false"
  }
  
  exports['src/validation .isBoolean returns error message when value is a not a string 1'] = {
    "key": "mockConfigKey",
    "value": 1,
    "type": "a string"
  }
  
  exports['src/validation .isString returns error message when value is a not a string 1'] = {
    "key": "mockConfigKey",
    "value": 1,
    "type": "a string"
  }
  
  exports['src/validation .isArray returns error message when value is a non-array 1'] = {
    "key": "mockConfigKey",
    "value": 1,
    "type": "an array"
  }
  
  exports['not string or array'] = {
    "key": "mockConfigKey",
    "value": null,
    "type": "a string or an array of strings"
  }
  
  exports['array of non-strings'] = {
    "key": "mockConfigKey",
    "value": [
      1,
      2,
      3
    ],
    "type": "a string or an array of strings"
  }
  
  exports['src/validation .isNumberOrFalse returns error message when value is a not number or false 1'] = {
    "key": "mockConfigKey",
    "value": null,
    "type": "a number or false"
  }
  
  exports['src/validation .isPlainObject returns error message when value is a not an object 1'] = {
    "key": "mockConfigKey",
    "value": 1,
    "type": "a plain object"
  }
  
  exports['src/validation .isNumber returns error message when value is a not a number 1'] = {
    "key": "mockConfigKey",
    "value": "string",
    "type": "a number"
  }
  
  exports['invalid retry value'] = {
    "key": "mockConfigKey",
    "value": "1",
    "type": "a positive number or null or an object with keys \"openMode\" and \"runMode\" with values of numbers or nulls"
  }
  
  exports['invalid retry object'] = {
    "key": "mockConfigKey",
    "value": {
      "fakeMode": 1
    },
    "type": "a positive number or null or an object with keys \"openMode\" and \"runMode\" with values of numbers or nulls"
  }
  
  exports['src/validation .isValidClientCertificatesSet returns error message for certs not passed as an array array 1'] = {
    "key": "mockConfigKey",
    "value": "1",
    "type": "a positive number or null or an object with keys \"openMode\" and \"runMode\" with values of numbers or nulls"
  }
  
  exports['src/validation .isValidClientCertificatesSet returns error message for certs object without url 1'] = {
    "key": "clientCertificates[0].url",
    "type": "a URL matcher"
  }
  
  exports['missing https protocol'] = {
    "key": "clientCertificates[0].url",
    "value": "http://url.com",
    "type": "an https protocol"
  }
  
  exports['invalid url'] = {
    "key": "clientCertificates[0].url",
    "value": "not *",
    "type": "a valid URL"
  }
  
  exports['not qualified url'] = {
    "key": "mockConfigKey",
    "value": "url.com",
    "type": "a fully qualified URL (starting with `http://` or `https://`)"
  }
  
  exports['empty string'] = {
    "key": "mockConfigKey",
    "value": "",
    "type": "a fully qualified URL (starting with `http://` or `https://`)"
  }
  