While preparing problems with subtasks using Polygon, it's super annoying that we cannot set test groups using test scripts.
As a workaround, I wrote a simple script.
Test group of each test = the last token of the test generation command
function setPolygonTestGroupAutomatically() {
const mapping = {};
$("#testsTable tbody tr pre")
.each((idx_minus_one, v) => {
if (v.id) return; // Ignores raw input, only consider tests generated with command
const tokens = v.innerText.split(" "); // Test generation command
const testGroup = tokens[tokens.length - 1]; // Last token of the test generation command
if (!mapping[testGroup]) {
mapping[testGroup] = [];
}
mapping[testGroup].push(idx_minus_one + 1);
});
for(const [groupName, indices] of Object.entries(mapping)) {
$.post("/data/tests", {
action: "setMultipleTestGroup",
session: $('#session').text(),
testset: Object.fromEntries(new URLSearchParams($("#add-test").attr('href')))['testset'],
requestString: indices.map(idx => `testIndex=${idx}`).join('&'),
groupName,
ccid: $('meta[name="ccid"]').attr('content')
}).error((err) => console.error(err))
.then((data) => console.log(`Done ${groupName}`, data));
}
}
setPolygonTestGroupAutomatically();
Paste the script above to the developer console on the tests page.