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