@datacamp/learn-vm-scripts 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.cjs +37 -17
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -366649,13 +366649,47 @@ var setFullscreen = async (page, provider) => {
366649
366649
  log(`Failed to set fullscreen for ${provider}: ${error}`);
366650
366650
  }
366651
366651
  };
366652
+ var waitForStableBox = async (page, selector, stableMs = 200) => {
366653
+ await page.waitForSelector(selector, { visible: true });
366654
+ return page.waitForFunction(
366655
+ (sel, stable) => {
366656
+ const el = document.querySelector(sel);
366657
+ if (!el) return false;
366658
+ const now = performance.now();
366659
+ const rect = el.getBoundingClientRect();
366660
+ if (!window.__stableBox) {
366661
+ window.__stableBox = {};
366662
+ }
366663
+ const previous = window.__stableBox[sel];
366664
+ if (!previous) {
366665
+ window.__stableBox[sel] = { rect, t: now };
366666
+ return false;
366667
+ }
366668
+ const samePos = Math.abs(previous.rect.x - rect.x) < 0.5 && Math.abs(previous.rect.y - rect.y) < 0.5 && Math.abs(previous.rect.width - rect.width) < 0.5 && Math.abs(previous.rect.height - rect.height) < 0.5;
366669
+ if (!samePos) {
366670
+ window.__stableBox[sel] = { rect, t: now };
366671
+ return false;
366672
+ }
366673
+ return now - previous.t >= stable;
366674
+ },
366675
+ { timeout: 3e3 },
366676
+ selector,
366677
+ stableMs
366678
+ );
366679
+ };
366652
366680
 
366653
366681
  // src/setInput.ts
366654
- var setInput = ({
366682
+ var setInput = async ({
366655
366683
  page,
366656
366684
  querySelector,
366657
366685
  value
366658
366686
  }) => {
366687
+ try {
366688
+ await waitForStableBox(page, querySelector);
366689
+ } catch (error) {
366690
+ log(`Error waiting for stable box: ${error}`);
366691
+ }
366692
+ await page.type(querySelector, value);
366659
366693
  return page.evaluate(
366660
366694
  ({ querySelector: querySelector2, value: value2 }) => {
366661
366695
  document.querySelector(querySelector2).value = value2;
@@ -366697,11 +366731,9 @@ async function loginToAzure({
366697
366731
  log("Navigating to Azure login page...");
366698
366732
  await Promise.all([page.waitForNavigation(), page.goto(ensureHttps(url))]);
366699
366733
  log("Entering email...");
366700
- const usernameQuerySelector = '[name="loginfmt"]';
366701
- await page.waitForSelector(usernameQuerySelector);
366702
366734
  await setInput({
366703
366735
  page,
366704
- querySelector: usernameQuerySelector,
366736
+ querySelector: '[name="loginfmt"]',
366705
366737
  value: username
366706
366738
  });
366707
366739
  await Promise.all([
@@ -366710,11 +366742,9 @@ async function loginToAzure({
366710
366742
  ]);
366711
366743
  log("Email entered successfully");
366712
366744
  log("Entering password...");
366713
- const passwordQuerySelector = 'input[type="password"]';
366714
- await page.waitForSelector(passwordQuerySelector, { visible: true });
366715
366745
  await setInput({
366716
366746
  page,
366717
- querySelector: passwordQuerySelector,
366747
+ querySelector: 'input[type="password"]',
366718
366748
  value: password
366719
366749
  });
366720
366750
  await Promise.all([
@@ -366751,15 +366781,11 @@ async function loginToAWS({
366751
366781
  }) {
366752
366782
  log("Navigating to AWS login page...");
366753
366783
  await page.goto(ensureHttps(url));
366754
- await page.waitForSelector('input[name="username"]');
366755
- await page.type('input[name="username"]', username);
366756
366784
  await setInput({
366757
366785
  page,
366758
366786
  querySelector: 'input[name="username"]',
366759
366787
  value: username
366760
366788
  });
366761
- await page.waitForSelector('input[name="password"]');
366762
- await page.type('input[name="password"]', password);
366763
366789
  await setInput({
366764
366790
  page,
366765
366791
  querySelector: 'input[name="password"]',
@@ -366923,7 +366949,6 @@ async function loginToFabric({
366923
366949
  log("Navigating to Fabric login page...");
366924
366950
  await page.goto(ensureHttps(url));
366925
366951
  log("Entering email...");
366926
- await page.waitForSelector('input[id="email"]');
366927
366952
  await setInput({
366928
366953
  page,
366929
366954
  querySelector: 'input[id="email"]',
@@ -366936,7 +366961,6 @@ async function loginToFabric({
366936
366961
  maxRetries: 10
366937
366962
  });
366938
366963
  log("Entering password...");
366939
- await page.waitForSelector('input[type="password"]');
366940
366964
  await setInput({
366941
366965
  page,
366942
366966
  querySelector: 'input[type="password"]',
@@ -366994,15 +367018,11 @@ async function loginToN8N({
366994
367018
  }) {
366995
367019
  log("Navigating to N8N login page...");
366996
367020
  await page.goto(ensureHttps(url));
366997
- await page.waitForSelector(usernameInputSelector);
366998
- await page.type(usernameInputSelector, username);
366999
367021
  await setInput({
367000
367022
  page,
367001
367023
  querySelector: usernameInputSelector,
367002
367024
  value: username
367003
367025
  });
367004
- await page.waitForSelector(passwordInputSelector);
367005
- await page.type(passwordInputSelector, password);
367006
367026
  await setInput({
367007
367027
  page,
367008
367028
  querySelector: passwordInputSelector,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datacamp/learn-vm-scripts",
3
- "version": "1.9.0",
3
+ "version": "1.10.0",
4
4
  "repository": "git@github.com:datacamp-engineering/learn-vm-scripts.git",
5
5
  "description": "Scripts used by VMs in learn.",
6
6
  "main": "./dist/index.cjs",