@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.
- package/dist/index.cjs +37 -17
- 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:
|
|
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:
|
|
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