An automatic script to set test groups in Polygon automatically

Revision en1, by .o., 2020-11-01 17:49:12

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.

Tags polygon

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en7 English .o. 2024-02-09 10:36:02 166 fix: has more error
en6 English .o. 2024-02-09 10:32:21 123 mitigate polygon's testtable change
en5 English .o. 2020-11-05 18:39:16 17 Tiny change: 'rything!")\n }\n ' -> 'rything!"); \n return;\n }\n '
en4 English .o. 2020-11-05 18:38:27 10
en3 English .o. 2020-11-05 18:37:09 517
en2 English .o. 2020-11-01 17:50:43 7
en1 English .o. 2020-11-01 17:49:12 1759 Initial revision (published)