in support-frontend/assets/helpers/abTests/abtest.ts [479:523]
function getUserParticipation(
test: Test,
testId: string,
mvtId: number,
country: IsoCountry,
countryGroupId: CountryGroupId,
acquisitionDataTests: AcquisitionABTest[] | undefined,
): UserParticipation {
const { audiences, referrerControlled } = test;
if (cookie.get('_post_deploy_user')) {
return NO_PARTICIPATION;
}
const audience =
audiences[country] ??
audiences[countryGroupId] ??
audiences.ALL ??
audiences.CONTRIBUTIONS_ONLY;
if (!audience) {
return NO_PARTICIPATION;
}
if (referrerControlled) {
// For referrer controlled tests we have to search through the tests in the acquisition
// data to find a match. We use the `startsWith` method to support test campaigns all
// with a common prefix.
const acquisitionDataTest = acquisitionDataTests?.find(
(acquisitionDataTest) => acquisitionDataTest.name.startsWith(testId),
);
if (!acquisitionDataTest) {
return NO_PARTICIPATION;
}
return referrerControlledActiveParticipation(acquisitionDataTest);
}
const testMin: number = MVT_MAX * audience.offset;
const testMax: number = testMin + MVT_MAX * audience.size;
return mvtId >= testMin && mvtId < testMax && userInBreakpoint(audience)
? PARTICIPATING
: NO_PARTICIPATION;
}