LabelStudio.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. const { I } = inject();
  2. const Helpers = require("../tests/helpers");
  3. module.exports = {
  4. init({ events = {}, ...params }) {
  5. I.executeScript(Helpers.createLabelStudioInitFunction(params));
  6. for (const [eventName, callback] of Object.entries(events)) {
  7. this.on(eventName, callback);
  8. }
  9. const defaultCpuThrottling = process.env.DEFAULT_CPU_THROTTLING;
  10. if (defaultCpuThrottling) {
  11. I.wait(1); // gives some time to page to load
  12. I.throttleCPU(+defaultCpuThrottling);
  13. }
  14. },
  15. on(eventName, callback) {
  16. I.executeScript(Helpers.createAddEventListenerScript(eventName, callback));
  17. },
  18. async serialize() {
  19. const result = await I.executeScript(Helpers.serialize);
  20. return result;
  21. },
  22. hasFF(fflag) {
  23. return I.executeScript(Helpers.hasFF, fflag);
  24. },
  25. setFeatureFlagsDefaultValue(value) {
  26. I.executeScript(Helpers.setFeatureFlagsDefaultValue, value);
  27. },
  28. setFeatureFlags(featureFlags) {
  29. I.executeScript(Helpers.setFeatureFlags, featureFlags);
  30. },
  31. clearModalIfPresent() {
  32. I.executeScript(Helpers.clearModalIfPresent);
  33. },
  34. async waitForObjectsReady() {
  35. await I.executeScript(Helpers.waitForObjectsReady);
  36. },
  37. async resultsNotChanged(result, fractionDigits = 2) {
  38. const serialized = await this.serialize();
  39. I.assertDeepEqualWithTolerance(result, serialized, fractionDigits, "Results must be equal");
  40. },
  41. async resultsChanged(result, fractionDigits = 2) {
  42. const serialized = await this.serialize();
  43. I.assertNotDeepEqualWithTolerance(result, serialized, fractionDigits, "Results must be different");
  44. },
  45. async grabUserLabels() {
  46. const userLabels = await I.executeScript(() => {
  47. return Object.fromEntries(
  48. Object.entries(window.Htx.userLabels?.controls).map(([control, labels]) => {
  49. return [control, labels.map((label) => label.path)];
  50. }),
  51. );
  52. });
  53. return userLabels;
  54. },
  55. initUserLabels(userLabels) {
  56. return I.executeScript((userLabels) => {
  57. window.Htx.userLabels?.init(userLabels);
  58. }, userLabels);
  59. },
  60. enableSetting(settingName) {
  61. I.say("Attempting to open settings menu");
  62. I.click("[aria-label=Settings]");
  63. I.see("Settings");
  64. I.say("Attempt to enable setting");
  65. I.click(settingName);
  66. I.seeCheckboxIsChecked(settingName);
  67. I.click("[aria-label=Close]");
  68. I.dontSee("Settings");
  69. },
  70. disableSetting(settingName) {
  71. I.say("Attempting to open settings menu");
  72. I.click("[aria-label=Settings]");
  73. I.see("Settings");
  74. I.say("Attempt to disable setting");
  75. I.click(settingName);
  76. I.seeCheckboxIsChecked(settingName);
  77. I.click("[aria-label=Close]");
  78. I.dontSee("Settings");
  79. },
  80. };