Skip to content

Supported Markets ​

The generator supports 30+ individual European markets and predefined market groups. Markets determine which URLs your tests target and how test configuration is structured.

Multi-Country Market Groups ​

These groups target multiple countries at once, useful when your experiment spans several markets:

Group CodeNameCountries
SEBNBeneluxBelgium (NL), Belgium (FR), Netherlands
SENANordicsSweden, Norway, Denmark, Finland
SEIBIberiaSpain, Portugal

Single-Country Market Groups ​

Major markets with their own group codes:

Group CodeNameCountry CodeURL Path
SEUKUKUK/uk/
SEFFranceFR/fr/
SEGGermanyDE/de/
SEIItalyIT/it/
SEPOLPolandPL/pl/
SECACanadaCA/ca/

Individual European Markets ​

All individual markets available in the autocomplete prompt:

CountryCodeURL Path
AlbaniaAL/al/
AustriaAT/at/
Belgium (NL)BE/be/
Belgium (FR)BE_FR/be_fr/
BosniaBA/ba/
BulgariaBG/bg/
CanadaCA/ca/
CroatiaHR/hr/
Czech RepublicCZ/cz/
DenmarkDK/dk/
EstoniaEE/ee/
FinlandFI/fi/
FranceFR/fr/
GermanyDE/de/
GreeceGR/gr/
HungaryHU/hu/
IrelandIE/ie/
ItalyIT/it/
LatviaLV/lv/
LithuaniaLT/lt/
MacedoniaMK/mk/
NetherlandsNL/nl/
NorwayNO/no/
PolandPL/pl/
PortugalPT/pt/
RomaniaRO/ro/
SerbiaRS/rs/
SlovakiaSK/sk/
SloveniaSI/si/
SpainES/es/
SwedenSE/se/
SwitzerlandCH/ch/
United KingdomUK/uk/

How Markets Map to Test URLs ​

Each market has a urlPath that is appended to your base URL. For example, with base URL https://www.example.com:

  • Netherlands: https://www.example.com/nl/
  • Spain: https://www.example.com/es/
  • Belgium (FR): https://www.example.com/be_fr/

The qa-links.config.js file constructs control and experiment URLs per market:

js
// Default pattern (auto-generated)
controlUrl:    `${baseUrl}/${market.urlPath}/control-page/`
experimentUrl: `${baseUrl}/${market.urlPath}/experiment-page/`

Environment Variable Overrides ​

You can override the default URL patterns with environment variables. The naming convention is:

CONTROL_URL_<MARKET_CODE>
EXPERIMENT_URL_<MARKET_CODE>

Examples:

bash
# Override Netherlands URLs
export CONTROL_URL_NL="https://www.example.com/nl/?at_preview_token=abc123"
export EXPERIMENT_URL_NL="https://www.example.com/nl/?at_preview_token=xyz789"

# Override Spain URLs
export CONTROL_URL_ES="https://www.example.com/es/?variant=control"
export EXPERIMENT_URL_ES="https://www.example.com/es/?variant=experiment"

If an environment variable is not set, the generator falls back to the default URL pattern. The validateUrls() function warns about missing environment variables at test startup.

Market Resolution ​

The generator resolves market input in this order:

  1. Market group code (e.g., SEBN) - resolves to all countries in the group
  2. Individual country code (e.g., NL) - resolves to that single market
  3. Custom input - treated as a custom market with the input as both code and URL path

This means you can use the generator with markets not in the predefined list by typing a custom market code.

Usage in Tests ​

Markets are available in your test configuration via experimentConfig.markets:

js
import { experimentConfig } from '../config/index.js';

// Iterate over all markets
for (const market of experimentConfig.markets) {
  console.log(market.code);    // 'NL'
  console.log(market.urlPath); // 'nl'
  console.log(market.name);    // 'Netherlands'
}

// Get a specific market
const nl = experimentConfig.getMarket('NL');