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');