mediawiki-skins-MinervaNeue/tests/qunit/skins.minerva.scripts/AB.test.js
Jdrewniak dbe79167e5 Revert "tests: Adopt private require() for skins.minerva.scripts"
This reverts commit 548e94da98.

Reason for revert: The patch was causing the following error on pageload

    Error: Cannot require undefined file includes/Skins/ToggleList/ToggleList.js
    require startup.js:1006

Bug: T373482
Change-Id: I22751109c124795af7d2e0ad6c4104745b2d6632
2024-08-27 20:06:24 +00:00

53 lines
1.5 KiB
JavaScript

( function () {
const AB = require( '../../../resources/skins.minerva.scripts/AB.js' );
const defaultConfig = {
testName: 'WME.MinervaABTest',
samplingRate: 0.5,
sessionId: mw.user.generateRandomSessionId()
};
QUnit.module( 'Minerva AB-test' );
QUnit.test( 'Bucketing test', ( assert ) => {
const userBuckets = {
unsampled: 0,
control: 0,
treatment: 0
};
const maxUsers = 1000;
for ( let i = 0; i < maxUsers; i++ ) {
const config = Object.assign( {}, defaultConfig, {
sessionId: mw.user.generateRandomSessionId()
} );
const bucketingTest = new AB( config );
if ( bucketingTest.isControl() ) {
++userBuckets.control;
} else if ( bucketingTest.isTreatment() ) {
++userBuckets.treatment;
} else if ( !bucketingTest.isSampled() ) {
++userBuckets.unsampled;
} else {
throw new Error( 'Unknown bucket!' );
}
}
assert.strictEqual(
( userBuckets.unsampled / maxUsers > 0.3 ) &&
( userBuckets.unsampled / maxUsers < 0.7 ),
true, 'test unsampled group is about 50% (' + userBuckets.unsampled / 10 + '%)' );
assert.strictEqual(
( userBuckets.control / maxUsers > 0.1 ) &&
( userBuckets.control / maxUsers < 0.4 ),
true, 'test control group is about 25% (' + userBuckets.control / 10 + '%)' );
assert.strictEqual(
( userBuckets.treatment / maxUsers > 0.1 ) &&
( userBuckets.treatment / maxUsers < 0.4 ),
true, 'test new treatment group is about 25% (' + userBuckets.treatment / 10 + '%)' );
} );
}() );