@datacamp/learn-vm-scripts 1.9.0 → 1.11.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 +41 -17
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -366649,13 +366649,51 @@ 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
+ try {
366693
+ await page.type(querySelector, value);
366694
+ } catch (error) {
366695
+ log(`Error typing in input: ${error}`);
366696
+ }
366659
366697
  return page.evaluate(
366660
366698
  ({ querySelector: querySelector2, value: value2 }) => {
366661
366699
  document.querySelector(querySelector2).value = value2;
@@ -366697,11 +366735,9 @@ async function loginToAzure({
366697
366735
  log("Navigating to Azure login page...");
366698
366736
  await Promise.all([page.waitForNavigation(), page.goto(ensureHttps(url))]);
366699
366737
  log("Entering email...");
366700
- const usernameQuerySelector = '[name="loginfmt"]';
366701
- await page.waitForSelector(usernameQuerySelector);
366702
366738
  await setInput({
366703
366739
  page,
366704
- querySelector: usernameQuerySelector,
366740
+ querySelector: '[name="loginfmt"]',
366705
366741
  value: username
366706
366742
  });
366707
366743
  await Promise.all([
@@ -366710,11 +366746,9 @@ async function loginToAzure({
366710
366746
  ]);
366711
366747
  log("Email entered successfully");
366712
366748
  log("Entering password...");
366713
- const passwordQuerySelector = 'input[type="password"]';
366714
- await page.waitForSelector(passwordQuerySelector, { visible: true });
366715
366749
  await setInput({
366716
366750
  page,
366717
- querySelector: passwordQuerySelector,
366751
+ querySelector: 'input[type="password"]',
366718
366752
  value: password
366719
366753
  });
366720
366754
  await Promise.all([
@@ -366751,15 +366785,11 @@ async function loginToAWS({
366751
366785
  }) {
366752
366786
  log("Navigating to AWS login page...");
366753
366787
  await page.goto(ensureHttps(url));
366754
- await page.waitForSelector('input[name="username"]');
366755
- await page.type('input[name="username"]', username);
366756
366788
  await setInput({
366757
366789
  page,
366758
366790
  querySelector: 'input[name="username"]',
366759
366791
  value: username
366760
366792
  });
366761
- await page.waitForSelector('input[name="password"]');
366762
- await page.type('input[name="password"]', password);
366763
366793
  await setInput({
366764
366794
  page,
366765
366795
  querySelector: 'input[name="password"]',
@@ -366923,7 +366953,6 @@ async function loginToFabric({
366923
366953
  log("Navigating to Fabric login page...");
366924
366954
  await page.goto(ensureHttps(url));
366925
366955
  log("Entering email...");
366926
- await page.waitForSelector('input[id="email"]');
366927
366956
  await setInput({
366928
366957
  page,
366929
366958
  querySelector: 'input[id="email"]',
@@ -366936,7 +366965,6 @@ async function loginToFabric({
366936
366965
  maxRetries: 10
366937
366966
  });
366938
366967
  log("Entering password...");
366939
- await page.waitForSelector('input[type="password"]');
366940
366968
  await setInput({
366941
366969
  page,
366942
366970
  querySelector: 'input[type="password"]',
@@ -366994,15 +367022,11 @@ async function loginToN8N({
366994
367022
  }) {
366995
367023
  log("Navigating to N8N login page...");
366996
367024
  await page.goto(ensureHttps(url));
366997
- await page.waitForSelector(usernameInputSelector);
366998
- await page.type(usernameInputSelector, username);
366999
367025
  await setInput({
367000
367026
  page,
367001
367027
  querySelector: usernameInputSelector,
367002
367028
  value: username
367003
367029
  });
367004
- await page.waitForSelector(passwordInputSelector);
367005
- await page.type(passwordInputSelector, password);
367006
367030
  await setInput({
367007
367031
  page,
367008
367032
  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.11.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",