An automatic script to update test groups in Polygon automatically
Difference between en2 and en3, changed 517 character(s)
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↵


```javascript↵

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, i
const keyToIndices] of = Object.entries(mapping)) {;↵
  function go (idx) {↵
    if (idx == keyToIndices.length) {↵
      console.log("Changed everything!")↵
    }↵
    const [groupName, indices] = keyToIndices[idx];

    $.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));↵
  }
 ${indices}`, data);↵
      setTimeout(go, 1000, idx+1);↵
    });↵
  }↵
  go(0);

}↵
setPolygonTestGroupAutomatically();↵
```↵

Paste the script above to the developer console on the tests page.↵

UPD: Added 1-second delay between each API call. It seems if we call the API multiple times simultaneously, Polygon will automatically change the dollars of the test script into non-consecutive numbers, making the whole working copy inaccessible.↵

<iframe width="560" height="315" src="https://www.youtube.com/embed/iaByPo0XuHk" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

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)