diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml deleted file mode 100644 index ea56f096eb..0000000000 --- a/.github/workflows/link-checker.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Link Checker - -on: - pull_request: - push: - paths: - - 'docs/**' - workflow_dispatch: - -env: - ALGOLIA_APP_ID: ${{secrets.ALGOLIA_APP_ID}} - ALGOLIA_KEY: ${{secrets.ALGOLIA_KEY}} - SLACK_LINK: ${{secrets.SLACK_LINK}} - GITLAB_TOKEN: ${{secrets.GITLAB_TOKEN}} - -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version-file: '.nvmrc' - cache: 'npm' - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - - name: Install Dependencies - run: | - npm install - - - name: Build - run: | - npm run build - - - name: Serve Docs - working-directory: build - run: | - python3 -m http.server 8000 & - - - name: Install Test Dependencies - working-directory: tests/sauce-docs-checker - run: | - npm install - - - name: Check Links - working-directory: tests/sauce-docs-checker - run: | - npm start -- $GITHUB_RUN_ID diff --git a/tests/sauce-docs-checker/.gitignore b/tests/sauce-docs-checker/.gitignore deleted file mode 100644 index 743169ddf5..0000000000 --- a/tests/sauce-docs-checker/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -*.txt -.idea/ -.DS_Store diff --git a/tests/sauce-docs-checker/README.md b/tests/sauce-docs-checker/README.md deleted file mode 100644 index 7d436d1efc..0000000000 --- a/tests/sauce-docs-checker/README.md +++ /dev/null @@ -1,198 +0,0 @@ -# Sauce Docs Checker - -**Table of Contents** -* [Overview](#overview) -* [How to Read the Output](#how-to-read-the-output) - * [Wiki Reference Example](#wiki-reference-example) - * [Broken Link Example](#broken-link-example) - * [Full Output Example](#full-output-example) - -## Overview -The script in this repo checks for wiki references and broken links in [https://docs.saucelabs.com](https://docs.saucelabs.com). More specifically it checks for: - -* `href` tags that reference `wiki.saucelabs.com` -* Broken link references to docs.saucelabs.com (`404 Not Found` or malformed URLs) - -## How to Read the Output - -The script is scheduled daily via `.gitlab-ci.yaml`. After a job completes, the output is rendered in the pipeline along with a notification sent to the [`#sauce-docs-checker`](C024QEX7C2G) Slack channel. - -The slack message will often read like this: - -```bash -Date MM YYYY -Summary -- docs pages parsed = 390 -- docs pages broken = 18 -- wiki ref count = 7 - - matched = 5 - - unmatched = 2 -- broken link count = 23 -``` - -What this means is that there are: - -* **18** pages that have either links to the old wiki or broken links -* **7** instances where a doc page links to the old wiki -* **23** pages that contain a link to another page in `docs.saucelabs.com` that returns a `404 Not Found` error - -> NOTE: `matched` means that there is a replacement link, and it is included in the output. `unmatched` means that there is no obvious replacement link. - -### Wiki Reference Example -Consider the following output: - -```bash -**** REFERENCES **** -https://docs.saucelabs.com/overview - WIKI | Selenium | https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Selenium+for+Automated+Website+Testing => https://docs.saucelabs.comdocs.saucelabs.com/web-apps/selenium -``` - -This means that the url: `https://docs.saucelabs.com/overview` has a wiki reference (`href` tag) on that page, in this case it's `https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Selenium+for+Automated+Website+Testing`. - -The output indicates that the correct link should be `https://docs.saucelabs.com/web-apps/selenium`. This is an example of a `matched` entry. - -### Broken Link Example -Consider the following output: - -```bash -https://docs.saucelabs.com/dev/test-configuration-options - BROKEN | Application Storage | https://docs.saucelabs.com/dev/mobile-apps/app-storage | UNMATCHED - BROKEN | Dynamic Allocation | https://docs.saucelabs.com/dev/mobile-apps/automated-testing/appium/real-devices | UNMATCHED - BROKEN | Device Management for Real Devices | https://docs.saucelabs.com/dev/mobile-apps/supported-devices | UNMATCHED -``` - -This means that the url: - - `https://docs.saucelabs.com/dev/test-configuration-options` - -contains three references to pages located in: - - `docs.saucelabs.com` - -that return a `404 Not Found` error code. This could be for multiple reasons: - -* The page was moved/removed, and the URL changed -* There's a typo in the URL / reference tag - -At the end of each broken link entry contains the word `UNMATCHED`, this indicates that there is no obvious replacement link in our `301` redirect repo. In the cases above, the files were moved and no longer exist in the `/dev` location, so by simple removing that part of the URL fixes the problem. - -### Full Output Example -Below is an example of a full output message that includes multiple examples of wiki references and broken links. - -> NOTE: **About the Format** -> -> The indentation represents the source page that includes the wiki reference/broken links e.g. -> -> ```bash -> Link-In-Question -> WIKI/BROKEN | Section Name | Problem Link | MATCHED/UNMATCHED -> ``` - -
- Click here to see the full output - -```bash -**** PARSING https://docs.saucelabs.com/ **** -*18 docs pages broken* -- docs pages parsed = 390 -- wiki ref count = 7 - - matched = 5 - - unmatched = 2 -- broken link count = 23 -************************************ -**** REFERENCES **** -https://docs.saucelabs.com/overview - WIKI | Selenium | https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Selenium+for+Automated+Website+Testing => https://docs.saucelabs.comdocs.saucelabs.com/web-apps/selenium - WIKI | Appium | https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Appium+for+Mobile+Application+Testing => https://docs.saucelabs.comdocs.saucelabs.com/mobile-apps/automated-testing/appium - WIKI | Jenkins | https://wiki.saucelabs.com/display/DOCS/Setting+Up+Sauce+Labs+with+Jenkins => https://docs.saucelabs.comdocs.saucelabs.com/ci/jenkins - WIKI | Bamboo | https://wiki.saucelabs.com/display/DOCS/Setting+Up+Sauce+Labs+with+Bamboo => https://docs.saucelabs.comdocs.saucelabs.com/ci/bamboo -https://docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/specialized-environments - WIKI | Creating a Sauce Connect Tunnel for Legacy Real Device Cloud | https://wiki.saucelabs.com/display/DOCS/Creating+a+Sauce+Connect+Tunnel+for+Legacy+Real+Device+Cloud | UNMATCHED -https://docs.saucelabs.com/mobile-apps/automated-testing/appium/using-appium - WIKI | Appium Bootcamp | https://wiki.saucelabs.com/pages/viewpage.action?pageId=63480380 | UNMATCHED -https://docs.saucelabs.com/insights/history - WIKI | Debugging Tests with JavaScript Console Logs and HAR Files (Extended Debugging) | https://wiki.saucelabs.com/pages/viewpage.action?pageId=70072943 => https://docs.saucelabs.comdocs.saucelabs.com/insights/debug -https://docs.saucelabs.com/dev/test-configuration-options - BROKEN | Application Storage | https://docs.saucelabs.com/dev/mobile-apps/app-storage | UNMATCHED - BROKEN | Dynamic Allocation | https://docs.saucelabs.com/dev/mobile-apps/automated-testing/appium/real-devices | UNMATCHED - BROKEN | Device Management for Real Devices | https://docs.saucelabs.com/dev/mobile-apps/supported-devices | UNMATCHED -https://docs.saucelabs.com/mobile-apps/supported-devices/ - BROKEN | Test Configuration Options | https://docs.saucelabs.com/mobile-apps/dev/test-configuration-options | UNMATCHED -https://docs.saucelabs.com/mobile-apps/features/index.html - BROKEN | Virtual USB for Sauce Labs Real Devices | https://docs.saucelabs.com/mobile-apps/mobile-apps/virtual-usb | UNMATCHED -https://docs.saucelabs.com/dev/glossary - BROKEN | Test Configuration Options | https://docs.saucelabs.com/dev/dev/test-configuration-options | UNMATCHED - BROKEN | Sauce Connect Proxy Tunnel Modes: Ephemeral and Long-Running | https://docs.saucelabs.com/dev/secure-connections/sauce-connect/proxy-tunnels | UNMATCHED - BROKEN | Live Testing for Native Mobile Apps on Real Devices | https://docs.saucelabs.com/dev/mobile-apps/live-testing/live-mobile-app-testing | UNMATCHED - BROKEN | Mobile App Testing with Espresso and XCUITest | https://docs.saucelabs.com/dev/mobile-apps/automated-testing/espresso-xcuitest | UNMATCHED - BROKEN | Live Cross Browser Testing | https://docs.saucelabs.com/dev/web-apps/live-testing/live-cross-browser-testing | UNMATCHED -https://docs.saucelabs.com/testrunner-toolkit/configuration/common-syntax - BROKEN | XCUITest | https://docs.saucelabs.com/testrunner-toolkit/configuration/testrunner-toolkit/configuration/xcuitest | UNMATCHED -https://docs.saucelabs.com/testrunner-toolkit/configuration/puppeteer - BROKEN | Visual Studio Code | https://docs.saucelabs.com/testrunner-toolkit/configuration/testrunner-toolkit/ide-integrations/vscode | UNMATCHED -https://docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/index.html - BROKEN | real device cloud requirements | https://docs.saucelabs.com/mobile-apps/automated-testing/appium/mobile-apps/supported-devices | UNMATCHED - BROKEN | Test Configuration Options | https://docs.saucelabs.com/mobile-apps/automated-testing/appium/dev/test-configuration-options | UNMATCHED - BROKEN | iOS and/or Android real devices for your tests | https://docs.saucelabs.com/mobile-apps/automated-testing/appium/mobile-apps/automated-testing/appium/real-devices | UNMATCHED -https://docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/real-devices - BROKEN | Sauce Runner for Real Devices CLI Reference | https://docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/dev/cli/espresso-xcuitest/real-devices | UNMATCHED -https://docs.saucelabs.com/dev/cli/espresso-xcuitest/yaml-config - BROKEN | Sauce Runner RDC CLI Options | https://docs.saucelabs.com/dev/cli/espresso-xcuitest/dev/cli/espresso-xcuitest/real-devices | UNMATCHED -https://docs.saucelabs.com/mobile-apps/creating-ipa-files - BROKEN | Real Device Testing with Espresso and XCUITest | https://docs.saucelabs.com/mobile-apps/mobile-apps/automated-testing/espresso-xcuitest/real-devices | UNMATCHED -https://docs.saucelabs.com/mobile-apps/automated-testing - BROKEN | Supported Mobile Devices | https://docs.saucelabs.com/mobile-apps/mobile-apps/supported-devices | UNMATCHED -https://docs.saucelabs.com/secure-connections/sauce-connect/installation - BROKEN | Sauce Connect Proxy Command-Line Reference | https://docs.saucelabs.com/secure-connections/sauce-connect/dev/cli/sauce-connect-proxy | UNMATCHED -https://docs.saucelabs.com/dev/cli/virtual-usb/find-sessionid - BROKEN | connect | https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/connect-session | UNMATCHED -https://docs.saucelabs.com/dev/cli/virtual-usb/delete-session - BROKEN | startSession | https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/start-session | UNMATCHED - BROKEN | sessions | https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/find-sessionid | UNMATCHED -************************************ -***** Matched ***** -https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Selenium+for+Automated+Website+Testing - => https://docs.saucelabs.comdocs.saucelabs.com/web-apps/selenium -https://wiki.saucelabs.com/display/DOCS/Getting+Started+with+Appium+for+Mobile+Application+Testing - => https://docs.saucelabs.comdocs.saucelabs.com/mobile-apps/automated-testing/appium -https://wiki.saucelabs.com/display/DOCS/Setting+Up+Sauce+Labs+with+Jenkins - => https://docs.saucelabs.comdocs.saucelabs.com/ci/jenkins -https://wiki.saucelabs.com/display/DOCS/Setting+Up+Sauce+Labs+with+Bamboo - => https://docs.saucelabs.comdocs.saucelabs.com/ci/bamboo -https://wiki.saucelabs.com/pages/viewpage.action?pageId=70072943 - => https://docs.saucelabs.comdocs.saucelabs.com/insights/debug -************************************ -***** Unmatched ***** -https://wiki.saucelabs.com/display/DOCS/Creating+a+Sauce+Connect+Tunnel+for+Legacy+Real+Device+Cloud -https://wiki.saucelabs.com/pages/viewpage.action?pageId=63480380 -************************************ -***** Broken ***** -https://docs.saucelabs.com/dev/mobile-apps/app-storage -https://docs.saucelabs.com/mobile-apps/dev/test-configuration-options -https://docs.saucelabs.com/dev/mobile-apps/automated-testing/appium/real-devices -https://docs.saucelabs.com/dev/mobile-apps/supported-devices -https://docs.saucelabs.com/mobile-apps/mobile-apps/virtual-usb -https://docs.saucelabs.com/dev/dev/test-configuration-options -https://docs.saucelabs.com/dev/secure-connections/sauce-connect/proxy-tunnels -https://docs.saucelabs.com/dev/mobile-apps/live-testing/live-mobile-app-testing -https://docs.saucelabs.com/dev/mobile-apps/automated-testing/espresso-xcuitest -https://docs.saucelabs.com/dev/web-apps/live-testing/live-cross-browser-testing -https://docs.saucelabs.com/testrunner-toolkit/configuration/testrunner-toolkit/configuration/xcuitest -https://docs.saucelabs.com/testrunner-toolkit/configuration/testrunner-toolkit/ide-integrations/vscode -https://docs.saucelabs.com/mobile-apps/automated-testing/appium/mobile-apps/supported-devices -https://docs.saucelabs.com/mobile-apps/automated-testing/appium/dev/test-configuration-options -https://docs.saucelabs.com/mobile-apps/automated-testing/appium/mobile-apps/automated-testing/appium/real-devices -https://docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/dev/cli/espresso-xcuitest/real-devices -https://docs.saucelabs.com/dev/cli/espresso-xcuitest/dev/cli/espresso-xcuitest/real-devices -https://docs.saucelabs.com/mobile-apps/mobile-apps/automated-testing/espresso-xcuitest/real-devices -https://docs.saucelabs.com/mobile-apps/mobile-apps/supported-devices -https://docs.saucelabs.com/secure-connections/sauce-connect/dev/cli/sauce-connect-proxy -https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/connect-session -https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/start-session -https://docs.saucelabs.com/dev/cli/virtual-usb/dev/cli/virtual-usb/find-sessionid -August 11, 2021 -OK -``` -
- -In the above example diff --git a/tests/sauce-docs-checker/index.js b/tests/sauce-docs-checker/index.js deleted file mode 100644 index 29fe51a53d..0000000000 --- a/tests/sauce-docs-checker/index.js +++ /dev/null @@ -1,254 +0,0 @@ -// Author: Clara Ko -// Co-authored / refactored by: James Tacker - -let fs = require('fs'); -let axios = require('axios'); -let cheerio = require('cheerio'); -let fastcsv = require('fast-csv'); -let moment = require('moment'); - -// github actions package -// javascript -const core = require('@actions/core'); - -let wiki_url = 'https://wiki.saucelabs.com'; -let docs_url = 'http://127.0.0.1:8000/'; -let result = {}; -let wiki_result = {}; -let wiki_map = {}; -let matched_result = {}; -let matched_list = []; -let unmatched_result = {}; -let broken_result = {}; - -let page_count = 0; -let wiki_count = 0; - -let ref_map = {}; - -let args = process.argv; -let joburl = args[args.length-1]; -// https://gitlab.prod.sjc3.saucelabs.net/clara.ko/sauce-docs-checker/-/jobs/4314130 -console.log(joburl) -if(joburl.includes('index.js')) joburl = null - -run(); - -async function run() { - console.log(`**** PARSING ${docs_url} ****`) - await parse_docs(docs_url); // no logging - await parse_wiki_map(); - await match_wiki_links(); - - let summary_str = get_summary() - let ref_str = get_references(ref_map) - let matched_str = get_links(matched_result,'Matched') - let unmatched_str = get_links(unmatched_result,'Unmatched') - let broken_str = get_links(broken_result,'Broken') - - if(joburl!==null) { - let arr = [ref_str,matched_str,unmatched_str,broken_str] - await exit_code(summary_str,arr,Object.keys(ref_map).length) - } -} - -async function exit_code(summary_str,arr,broken_count) { - let date_str = moment().format('LL') - console.log(date_str) - if(broken_count>0) core.setFailed(`Action failed with error ${broken_count} Broken Links`); -} - -/* This function was no longer needed as results output in pipeline and prevent merging */ - -// async function send_slack(summary_str,arr,broken_count) { -// let url = process.env.SLACK_LINK -// let date_str = moment().format('LL') -// console.log(date_str) -// let color = "#36a64f" -// if(broken_count>0) color = "#ff0f0f" -// let obj = { -// "attachments": [ -// { -// "color": color, -// "blocks": [ -// { -// "type": "header", -// "text": { -// "type": "plain_text", -// "text": date_str, -// "emoji": true -// } -// }, -// { -// "type": "section", -// "text": { -// "type": "mrkdwn", -// "text": summary_str -// } -// }, -// { -// "type": "section", -// "text": { -// "type": "mrkdwn", -// "text": `<${joburl}|See Details>` -// } -// } -// ] -// } -// ] -// } -// try { -// let res = await axios.post(url, obj); -// console.log(res.statusText) -// } -// catch(err) { -// console.log(err) -// } -// } - -async function match_wiki_links() { - let links = Object.keys(wiki_result); - for(let i=0;i',to); - matched_result[from] = to; - matched_list.push({from:from,to:to}); - } - else { - unmatched_result[from] = from; - } - } -} - -function get_summary() { - let str = `*${Object.keys(ref_map).length} docs pages broken*\n`+ - `- docs pages parsed = ${page_count}\n`+ - `- wiki ref count = ${wiki_count}\n`+ - `\t- matched = ${Object.keys(matched_result).length}\n`+ - `\t- unmatched = ${Object.keys(unmatched_result).length}\n`+ - `- broken link count = ${Object.keys(broken_result).length}`; - console.log(str+'\n') - return str -} - -function get_references(map) { - let keys = Object.keys(map) - if(keys.length===0) return null - let str = `************************************\n` - str += `**** REFERENCES ****\n` - for(let i=0;i ${match}` - str += `\t${item.type} | ${item.text} | ${item.to} ${match_str}\n` - } - } - console.log(str) - return str -} - -function get_links(map,title) { - let keys = Object.keys(map) - if(keys.length===0) return null - let str = `************************************\n` - str += `***** ${title} *****\n` - for(let i=0;i ${value}\n` - } - console.log(str) - return str -} - -async function parse_wiki_map() { - const text = fs.readFileSync('map.conf', 'utf-8') - let arr = text.split('\n'); - for(let i=0;i - /display/DOCS/Getting+Started+with+Selenium+for+Automated+Website+Testing docs.saucelabs.com/web-apps/automated-testing/selenium/; - /display/DOCS/Creating+an+ipa+File docs.saucelabs.com/mobile-apps/automated-testing/ipa-files/; - /display/DOCS/Test+Configuration+Options docs.saucelabs.com/dev/test-configuration-options/; - /display/DOCS/Using+Labels+for+Resource+Assignment+and+Job+Queuing+in+Jenkins docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/; - /display/DOCS/Parallel+Testing+in+Java+with+Maven+and+TestNG training.saucelabs.com/SeleniumJava/; - /display/DOCS/Appium+Capabilities+for+Real+Device+Testing docs.saucelabs.com/dev/test-configuration-options/; - /display/DOCS/Common+Error+Messages docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Mobile+Application+Testing+with+Camera+Image+Injection docs.saucelabs.com/mobile-apps/features/camera-image-injection/; - /display/DOCS/Platform+Configurator saucelabs.com/platform/platform-configurator/; - /display/DOCS/Examples+of+Appium+Desired+Capabilities+for+Mobile+Application+Tests docs.saucelabs.com/dev/test-configuration-options/#mobile-app-capabilities-appium-settings--required; - /display/DOCS/Setting+Test+Status+to+Pass+or+Fail docs.saucelabs.com/test-results/test-status/#update-test-status-in-session; - /display/DOCS/W3C+Capabilities+Support docs.saucelabs.com/dev/w3c-webdriver-capabilities/; - /display/DOCS/Getting+Started+with+Appium+for+Mobile+Application+Testing docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Desired+Capabilities+Required+for+Selenium+and+Appium+Tests docs.saucelabs.com/dev/test-configuration-options/; - /display/DOCS/Best+Practice:+Use+Environment+Variables+for+Authentication+Credentials docs.saucelabs.com/basics/environment-variables/; - /display/DOCS/Automated+Testing+with+Real+Devices docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /display/DOCS/Basic+Sauce+Connect+Proxy+Setup docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/Example+Appium+Scripts+for+Android+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/The+Sauce+Labs+REST+API docs.saucelabs.com/dev/api/; - /display/DOCS/Best+Practices+for+Running+Tests community.saucelabs.com/search?q=Best%20Practice%20for%20Running%20Tests/; - /display/DOCS/Uploading+your+Application+to+Emulators+and+Simulators docs.saucelabs.com/mobile-apps/app-storage/; - /display/DOCS/Downloading+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/installation/; - /display/DOCS/Automated+Testing+with+Emulators+and+Simulators docs.saucelabs.com/mobile-apps/automated-testing/appium/virtual-devices/; - /display/DOCS/Best+Practice:+Use+Explicit+Waits community.saucelabs.com/unit-testing-friends-6/best-practice-use-explicit-waits-152/; - /display/DOCS/Sauce+Connect+Proxy+Command-Line+Quick+Reference+Guide docs.saucelabs.com/dev/cli/sauce-connect-proxy/; - /display/DOCS/Python+Example+Script+for+Android+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Application+Storage docs.saucelabs.com/mobile-apps/app-storage/; - /display/DOCS/Best+Practice:+Use+Build+IDs,+Tags,+and+Names+to+Identify+Your+Tests docs.saucelabs.com/basics/test-config-annotation/test-annotation/; - /display/DOCS/How+to+Deal+with+Flaky+Java+Tests community.saucelabs.com/unit-testing-friends-6/best-practice-how-to-deal-with-flaky-java-tests-163/; - /pages/viewpage.action?pageId=48365900 docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - /display/DOCS/Java+Test+Setup+Example docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Running+Parallel+Tests+with+Jenkins docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Sauce+Connect+Proxy+Troubleshooting docs.saucelabs.com/secure-connections/sauce-connect/troubleshooting/; - /display/DOCS/Real+Device+FAQs docs.saucelabs.com/mobile-apps/faq/; - /display/DOCS/Uploading+your+Application+to+Sauce+Storage docs.saucelabs.com/mobile-apps/app-storage/#uploading-to-legacy-sauce-storage; - /display/DOCS/Testing+with+Virtual+USB+on+Real+Devices docs.saucelabs.com/mobile-apps/features/virtual-usb/; - /display/DOCS/Best+Practice:+Imperative+v.+Declarative+Testing+Scenarios community.saucelabs.com/unit-testing-friends-6/best-practice-imperative-v-declarative-testing-scenarios-160/; - /pages/viewpage.action?pageId=70072943 docs.saucelabs.com/insights/debug/; - /display/DOCS/Automated+Web+App+Testing+on+Desktop+and+Mobile+Browsers docs.saucelabs.com/basics/quickstarts/; - /display/DOCS/Biometric+Authentication+in+Automated+Mobile+App+Testing docs.saucelabs.com/mobile-apps/features/biometric-authentication/; - /display/DOCS/Sauce+Connect+Proxy+FAQs docs.saucelabs.com/secure-connections/sauce-connect/faq/; - /display/DOCS/Things+That+Can+Go+Wrong+with+Running+Java+Tests+in+Parallel,+and+How+to+Debug+Them training.saucelabs.com/SeleniumJava/; - /display/DOCS/Setting+Up+Sauce+Labs+with+Jenkins docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Using+Sauce+Connect+Tunnel+Identifiers docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/basic-setup/#using-tunnel-identifiers; - /display/DOCS/Data+Center+Endpoints docs.saucelabs.com/basics/data-center-endpoints/; - /display/DOCS/Mobile+Application+Testing docs.saucelabs.com/mobile-apps/automated-testing/; - /display/DOCS/Sauce+Connect+Proxy+Setup+with+Additional+Proxies docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/additional-proxies/; - /display/DOCS/Using+Frameworks+to+Run+Tests+in+Parallel docs.saucelabs.com/web-apps/automated-testing/selenium/; - /display/DOCS/Measure+Page+Load+Performance+Using+Test+Automation docs.saucelabs.com/performance/transitions/; - /pages/viewpage.action?pageId=102716835 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=115062393 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=64720259 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=115066081 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=110206507 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=92675573 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=88811568 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=110207564 changelog.saucelabs.com/en; - /pages/viewpage.action?pageId=99649977 changelog.saucelabs.com/en; - - # <---------------basics section---------------> - /display/DOCS/Account+and+Team+Management docs.saucelabs.com/basics/acct-team-mgmt-hub/; - /display/DOCS/Managing+Organizations docs.saucelabs.com/basics/acct-team-mgmt/org-settings/; - /display/DOCS/Job%2C+User%2C+and+Integrations+Settings+for+Organizations docs.saucelabs.com/basics/acct-team-mgmt/org-settings/; - /display/DOCS/Security+Settings+for+Organizations docs.saucelabs.com/basics/acct-team-mgmt/org-settings/; - /display/DOCS/Single+Sign-On+Settings+for+Organizations docs.saucelabs.com/basics/acct-team-mgmt/org-settings/; - /display/DOCS/Understanding+Concurrency+Limits+and+Team+Accounts docs.saucelabs.com/basics/acct-team-mgmt/concurrency-limits/; - /display/DOCS/Adding+Users+to+Your+Account docs.saucelabs.com/basics/acct-team-mgmt/adding-deactivating-users/; - /display/DOCS/Deleting+Users docs.saucelabs.com/basics/acct-team-mgmt/adding-deactivating-users/; - /display/DOCS/Managing+User+Info+and+Accounts docs.saucelabs.com/basics/acct-team-mgmt/managing-user-info/; - /display/DOCS/Resetting+User+Access+Tokens docs.saucelabs.com/basics/acct-team-mgmt/managing-user-info/; - /display/DOCS/User+Account+Types docs.saucelabs.com/basics/acct-team-mgmt/managing-user-info/; - /display/DOCS/Viewing+and+Exporting+Usage+Data docs.saucelabs.com/basics/acct-team-mgmt/assigning-removing-users-teams/; - /display/DOCS/Sharing+Sauce+Connect+Proxy+Tunnels+-+Extended+Team+Management docs.saucelabs.com/basics/acct-team-mgmt/sauce-connect-proxy-tunnels/; - /display/DOCS/Account+and+Team+Management+for+Real+Devices docs.saucelabs.com/basics/acct-team-mgmt/real-devices/; - /display/DOCS/Setting+Up+Single+Sign-On docs.saucelabs.com/basics/sso/setting-up-single-sign-on/; - /display/DOCS/Configuring+Active+Directory+Federated+Service+for+Sauce+Labs+SSO docs.saucelabs.com/basics/sso/config-adfs/; - /display/DOCS/Configuring+Okta+for+Sauce+Labs+SSO docs.saucelabs.com/basics/sso/config-okta/; - /display/DOCS/Test+Configuration+and+Annotation docs.saucelabs.com/basics/test-config-annotation/test-config/; - /display/DOCS/Configuring+Tests+with+the+Platform+Configurator docs.saucelabs.com/basics/platform-configurator/; - /display/DOCS/Annotating+Tests+with+Selenium%27s+JavaScript+Executor docs.saucelabs.com/basics/test-config-annotation/test-annotation/; - /display/DOCS/Annotating+Tests+with+the+Sauce+Labs+REST+API docs.saucelabs.com/basics/test-config-annotation/test-annotation/; - /display/DOCS/Best+Practice%3A+Use+Build+IDs%2C+Tags%2C+and+Names+to+Identify+Your+Tests docs.saucelabs.com/basics/test-config-annotation/test-annotation/; - /display/DOCS/Examples+of+Test+Configuration+Options+for+Website+Tests saucelabs.com/platform/platform-configurator/; - /display/DOCS/Sauce+Labs+Basics docs.saucelabs.com/overview/; - /display/DOCS/Sauce+Labs+FAQs docs.saucelabs.com/overview/; - /display/DOCS/Sauce+Labs+Onboarding+Guide docs.saucelabs.com/overview/; - /display/DOCS/Early+Access+Australian+Data+Center docs.saucelabs.com/basics/data-center-endpoints/aust-early-access/; - /display/DOCS/Getting+Started docs.saucelabs.com/sauce-basics/; - - # <---------------mobile apps section---------------> - /display/DOCS/Automated+Mobile+Application+Testing+with+Sauce+Labs docs.saucelabs.com/mobile-apps/supported-devices/; - /display/DOCS/Mobile+Application+Testing+Admin+Guide docs.saucelabs.com/mobile-apps/supported-devices/; - /display/DOCS/Real+Device+Testing+Admin+Guide docs.saucelabs.com/mobile-apps/supported-devices/; - /display/DOCS/Emulator+and+Simulator+Testing+Admin+Guide docs.saucelabs.com/mobile-apps/supported-devices/; - /display/DOCS/Monitoring+Real+Device+Performance+for+Automated+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /display/DOCS/Appium+Capabilities+and+Example+Scripts+for+Emulators%2C+Simulators%2C+and+Real+Devices docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /display/DOCS/Appium+Capabilities+and+Example+Scripts+for+Emulators+and+Simulators docs.saucelabs.com/mobile-apps/automated-testing/appium/virtual-devices/; - /display/DOCS/Example+Appium+Scripts+for+iOS+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Example+Appium+Scripts+for+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Python+Example+Script+for+iOS+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Node.js+Example+Script+for+Android+Mobile+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/virtual-devices/; - /display/DOCS/Automated+Mobile+Application+Testing+on+Virtual+Devices docs.saucelabs.com/mobile-apps/automated-testing/appium/virtual-devices/; - /display/DOCS/Mobile+Testing+with+Appium+and+Sauce+Labs docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /display/DOCS/Mobile+App+Testing+with+Native+Frameworks+on+Virtual+and+Real+Devices+with+Sauce+Labs docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Using+Sauce+Runner+with+Native+Frameworks+for+Real+Device+Testing docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Example+Espresso+Tests+for+a+React-Native+App+on+Virtual+Devices docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Creating+a+Sauce+Runner+for+Real+Devices+Configuration+File docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Using+Espresso+for+Real+Device+Testing docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Using+XCUITest+for+Real+Device+Testing docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Uploading+the+App+and+Test+Files+to+Storage+Before+Execution docs.saucelabs.com/mobile-apps/app-storage/; - /display/DOCS/Using+Sauce+Runner+with+Native+Frameworks+for+Virtual+Device+Testing docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Using+Espresso+for+Virtual+Device+Testing docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Installing+Sauce+Runner+for+Virtual+Devices docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Troubleshooting+Espresso+Testing+for+Virtual+Devices docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/App+Center+Integration docs.saucelabs.com/mobile-apps/ms-app-center/; - /display/DOCS/Troubleshooting+Automated+Mobile+Application+Tests docs.saucelabs.com/dev/error-messages/; - /pages/viewpage.action?pageId=88811563 docs.saucelabs.com/mobile-apps/; - /display/DOCS/Live+Testing+for+Native+Mobile+Apps+on+Real+Devices docs.saucelabs.com/mobile-apps/live-testing/live-mobile-app-testing/; - /display/DOCS/Live+Mobile+Application+Testing+with+Sauce+Labs docs.saucelabs.com/mobile-apps/live-testing/live-mobile-app-testing/; - /display/DOCS/Using+Third+Party+Apps+and+Accounts+for+Live+Testing+on+Real+Devices docs.saucelabs.com/mobile-apps/live-testing/live-mobile-app-testing/; - /display/DOCS/Device+Vitals+for+Mobile+Applications docs.saucelabs.com/mobile-apps/live-testing/live-mobile-app-testing/; - /display/DOCS/Best+Practices+for+Live+Testing docs.saucelabs.com/mobile-apps/live-testing/live-mobile-app-testing/; - /pages/viewpage.action?pageId=63477340 docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /pages/viewpage.action?pageId=96835829 docs.saucelabs.com/mobile-apps/automated-testing/appium/; - /pages/viewpage.action?pageId=92677798 docs.saucelabs.com/mobile-apps/faq/; - /pages/viewpage.action?pageId=92677184 docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /pages/viewpage.action?pageId=92677219 docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /pages/viewpage.action?pageId=72746736 docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /pages/viewpage.action?pageId=120271039 docs.saucelabs.com/mobile-apps/automated-testing/; - /pages/viewpage.action?pageId=92677229 docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /pages/viewpage.action?pageId=102721137 docs.saucelabs.com/mobile-apps/app-storage/; - /pages/viewpage.action?pageId=110205666 docs.saucelabs.com/; - - # <---------------web apps section-------------------------> - /display/DOCS/Using+Pre-Run+Executables+to+Configure+Browsers+and+Virtual+Machines docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Setting+Up+Pre-Run+Executables docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/An+Introduction+to+Pre-Run+Executables docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Setting+Up+Silent+Mode+for+Pre-Run+Executables docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Setting+Basic+Authentication+in+Safari+with+a+Pre-Run+Executable docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Downloading+Files+to+a+Sauce+Labs+Virtual+Machine+Prior+to+Testing docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Editing+the+Virtual+Machine%27s+Host+File docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Creating+JSON+Objects+for+Multiple+Pre-Run+Executable+Arguments docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Creating+JSON+Objects+for+Multiple+Pre-Run+Executable+Arguments+in+Java+Test+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Running+an+AutoIt+Script+as+a+Pre-run+Executable+to+Handle+Windows+Security+Authentication+Dialogs docs.saucelabs.com/web-apps/automated-testing/selenium/pre-run-executables/; - /display/DOCS/Automated+Testing+of+Web+Apps+with+Sauce+Labs docs.saucelabs.com/web-apps/; - /display/DOCS/Example+Selenium+Scripts+for+Automated+Web+App+Tests docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Ruby+Test+Setup+Example docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Python+Test+Setup+Example docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Node.js+Test+Setup+Example docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /pages/viewpage.action?pageId=48365749 docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Troubleshooting+Automated+Web+App+Tests docs.saucelabs.com/web-apps/automated-testing/selenium/sel-trouble/; - /display/DOCS/Web+Application+Testing docs.saucelabs.com/web-apps/; - /display/DOCS/Live+Testing+of+Web+Apps+with+Sauce+Labs docs.saucelabs.com/web-apps/live-testing/live-cross-browser-testing/; - /display/DOCS/Live+Web+App+Testing+on+Mobile+Browsers+with+Virtual+and+Real+Devices docs.saucelabs.com/web-apps/live-testing/live-cross-browser-testing/; - /display/DOCS/Live+Web+App+Testing+on+Desktop+Browsers docs.saucelabs.com/web-apps/live-testing/live-cross-browser-testing/; - /display/DOCS/Troubleshooting+Live+Web+App+Tests docs.saucelabs.com/web-apps/live-testing/live-cross-browser-testing/; - /display/DOCS/Troubleshooting+Parallel+Tests docs.saucelabs.com/web-apps/automated-testing/selenium/sel-trouble/; - /display/DOCS/Sauce+Labs+Demonstration+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /display/DOCS/Java+Demonstration+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#java; - /display/DOCS/Python+Demonstration+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#python; - /display/DOCS/Ruby+Demonstration+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#ruby; - /display/DOCS/Node.js+Demonstration+Scripts docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#nodejs; - /pages/viewpage.action?pageId=48365799 docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#c-sharp; - /display/DOCS/Instant+Selenium+PHP+Tests docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/; - /spaces/flyingpdf/pdfpageexport.action?pageId=48365740 docs.saucelabs.com/web-apps/automated-testing/selenium/sample-scripts/#java; - - # <---------------secure connections section---------------> - /display/DOCS/Getting+Started+with+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/; - /display/DOCS/Setting+Up+Sauce+Connect docs.saucelabs.com/secure-connections/sauce-connect/; - /display/DOCS/Why+Sauce+Labs+Recommends+Sauce+Connect+Proxy+Over+Whitelisting+IP+Addresses docs.saucelabs.com/secure-connections/sauce-connect/; - /display/DOCS/System+and+Network+Requirements+for+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/system-requirements/; - /display/DOCS/Verifying+Sauce+Connect+Proxy+Network+Routes+on+Your+Host+Machine docs.saucelabs.com/secure-connections/sauce-connect/system-requirements/; - /display/DOCS/Sauce+Connect+Proxy+Setup+and+Configuration docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/High+Availability+Sauce+Connect+Proxy+Setup docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/Sauce+Connect+Proxy+Setup+for+Real+Device+Cloud docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/Headless+Sauce+Connect+Proxy+Setup docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/Sauce+Connect+Proxy+Bamboo+Configuration docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/; - /display/DOCS/Environment+Variables+Used+by+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/setup-configuration/environment-variables/; - /display/DOCS/Best+Practice%3A+Use+Environment+Variables+for+Authentication+Credentials docs.saucelabs.com/basics/environment-variables/; - /display/DOCS/Using+--auth+with+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Sauce+Connect+Proxy+Performance+Metrics docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - /display/DOCS/Improving+Sauce+Connect+Proxy+Performance docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - /display/DOCS/Monitoring+Sauce+Connect+Proxy+with+Service+Management+Tools docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - /display/DOCS/Running+Sauce+Connect+Proxy+as+a+Microsoft+Windows+Service docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - /display/DOCS/Using+the+Selenium+Relay+with+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/#using-the-selenium-relay; - /display/DOCS/Sauce+Connect+Proxy+and+Network+Security docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Securing+Sauce+Connect+Proxy docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Sauce+Connect+Proxy+Authentication docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Sauce+Connect+Proxy+Certificate+Handling docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Sauce+Connect+Proxy+and+SSL+Certificate+Bumping docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/; - /display/DOCS/Sauce+Connect+Proxy+Debugging+and+Diagnostics+with+--doctor+flag docs.saucelabs.com/secure-connections/sauce-connect/troubleshooting/; - /display/DOCS/What+Not+to+Do%3A+Common+Mistakes+in+Sauce+Connect+Proxy+Network+Configurations docs.saucelabs.com/secure-connections/sauce-connect/troubleshooting/; - /display/DOCS/IPSec+VPN docs.saucelabs.com/secure-connections/ipsec-vpn/; - /display/DOCS/IPSec+VPN+Architecture+and+Security docs.saucelabs.com/secure-connections/ipsec-vpn/; - /display/DOCS/IPSec+VPN+Network+Requirements docs.saucelabs.com/secure-connections/ipsec-vpn/; - /display/DOCS/Using+an+IPSec+VPN+Tunnel docs.saucelabs.com/secure-connections/ipsec-vpn/; - /display/DOCS/Sharing+IPSec+VPN+Tunnels docs.saucelabs.com/secure-connections/ipsec-vpn/; - /display/DOCS/IPSec+VPN+FAQs docs.saucelabs.com/secure-connections/ipsec-vpn/; - /pages/viewpage.action?pageId=66292142 docs.saucelabs.com/secure-connections/sauce-connect/proxy-tunnels/; - - # <---------------CI/CD section---------------> - /display/DOCS/Using+Sauce+Labs+with+Continuous+Integration+Platforms docs.saucelabs.com/ci/; - /display/DOCS/Setting+Up+Tests+to+Run+in+a+Continuous+Integration+Environment docs.saucelabs.com/ci/; - /display/DOCS/Setting+Up+CI+Platform+Integrations+with+Sauce+Plugins docs.saucelabs.com/ci/; - /display/DOCS/Other+CI+Platform+Integrations+with+Sauce+Labs docs.saucelabs.com/ci/; - /display/DOCS/Setting+Up+Sauce+Labs+with+Bamboo docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Installing+and+Configuring+the+Sauce+Labs+Plugin+for+Bamboo docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Configuring+Bamboo+for+a+Java+Project+with+Sauce+Labs docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Configuring+Bamboo+for+a+Python+Project+with+Sauce+Labs docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Referencing+Environment+Variables+for+Bamboo+Jobs docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Outputting+the+Bamboo+Session+ID+to+stdout docs.saucelabs.com/ci/bamboo/; - /display/DOCS/Setting+Up+Sauce+Labs+and+Bitbucket+Pipelines docs.saucelabs.com/ci/bitbucket/; - /display/DOCS/Installing+and+Configuring+the+Sauce+OnDemand+Plugin+for+Jenkins docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Configuring+Sauce+Connect+Proxy+with+the+Jenkins+Plugin docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Setting+Desired+Capabilities+for+Jenkins+Projects docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Environment+Variables+Used+by+the+Jenkins+Plugin docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Configuring+Jenkins+Matrix+Projects+with+Sauce docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Setting+Up+Parameterized+Builds+for+Jenkins+and+Sauce docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Setting+Up+Reporting+between+Sauce+Labs+and+Jenkins docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Using+the+Sauce+Labs+Jenkins+Plugin+with+Jenkins+Pipeline docs.saucelabs.com/ci/jenkins/; - /display/DOCS/Setting+Up+Sauce+Labs+with+TeamCity docs.saucelabs.com/ci/teamcity/; - /display/DOCS/Installing+and+Configuring+the+Sauce+OnDemand+Plugin+for+TeamCity docs.saucelabs.com/ci/teamcity/; - /display/DOCS/Configuring+TeamCity+for+a+Java+Project+with+Sauce+Labs docs.saucelabs.com/ci/teamcity/; - /display/DOCS/Referencing+Environment+Variables+for+TeamCity+Jobs docs.saucelabs.com/ci/teamcity/; - /display/DOCS/Outputting+the+TeamCity+Session+ID+to+stdout docs.saucelabs.com/ci/teamcity/; - /display/DOCS/Setting+Up+Sauce+for+Visual+Studio+Team+Services docs.saucelabs.com/ci/; - - # <---------------Insights section---------------> - /display/DOCS/Guide+to+Sauce+Insights docs.saucelabs.com/insights/; - /display/DOCS/Filtering+for+Mobile+Application+and+Website+Tests docs.saucelabs.com/insights/scope/; - /display/DOCS/insights+FAQs docs.saucelabs.com/insights/scope/; - /display/DOCS/Test+History docs.saucelabs.com/insights/history/; - /display/DOCS/Analyzing+Trends docs.saucelabs.com/insights/trends/; - /display/DOCS/Improving+the+Efficiency+of+Your+Builds docs.saucelabs.com/insights/trends/; - /display/DOCS/Using+Failure+Analysis docs.saucelabs.com/insights/failure-analysis/; - /display/DOCS/Failure+Analysis+FAQs docs.saucelabs.com/insights/failure-analysis/; - /display/DOCS/Guide+to+the+Analytics+Interface docs.saucelabs.com/insights/; - /display/DOCS/Custom+Sauce+Labs+Webdriver+Extensions+for+Network+and+Log+Commands docs.saucelabs.com/insights/debug/; - - # <---------------Performance section---------------> - /display/DOCS/Getting+Started+with+Sauce+Front+End+Performance docs.saucelabs.com/performance/; - /display/DOCS/Sauce+Performance+Basics docs.saucelabs.com/performance/about/; - /display/DOCS/FAQ docs.saucelabs.com/performance/about/; - /display/DOCS/Test+Performance+Using+Speedo docs.saucelabs.com/performance/one-page/; - /display/DOCS/Configuration+Options docs.saucelabs.com/performance/one-page/; - /pages/viewpage.action?pageId=85230663 docs.saucelabs.com/performance/one-page/; - /display/DOCS/Page+Load+Metrics+Reference docs.saucelabs.com/performance/transitions/; - /display/DOCS/Test+the+Smoothness+or+Jankiness+of+Your+Application docs.saucelabs.com/performance/motion/; - /display/DOCS/Jankiness+Metrics+Reference docs.saucelabs.com/performance/motion/; - /display/DOCS/Test+Command docs.saucelabs.com/performance/motion/; - /display/DOCS/Debug+Performance docs.saucelabs.com/performance/analyze/; - - # <---------------Headless section---------------> - /display/DOCS/Getting+Started+with+Sauce+Headless docs.saucelabs.com/headless/; - /display/DOCS/Setting+Up+Sauce+Headless+with+Existing+Tests docs.saucelabs.com/headless/; - /display/DOCS/Sauce+Connect+Proxy+on+Headless docs.saucelabs.com/headless/; - /display/DOCS/URLs+for+Sauce+Headless docs.saucelabs.com/headless/; - - # <---------------Dev/Reference section---------------> - /display/DOCS/REST+API+Overview docs.saucelabs.com/dev/api/; - /display/DOCS/Accessing+the+API docs.saucelabs.com/dev/api/; - /display/DOCS/Accessing+the+API+for+Windows+Users docs.saucelabs.com/dev/api/; - /pages/viewpage.action?pageId=66294829 docs.saucelabs.com/dev/api/; - /display/DOCS/Application+Storage#ApplicationStorage-RESTAPIAuthentication docs.saucelabs.com/dev/api/storage/; - /display/DOCS/Rate+Limits+for+the+Sauce+Labs+REST+API docs.saucelabs.com/dev/api/; - /display/DOCS/Account+Methods docs.saucelabs.com/dev/api/accounts/; - /display/DOCS/Extended+Team+Management+API+-+Teams docs.saucelabs.com/dev/api/accounts/#team-methods; - /display/DOCS/Extended+Team+Management+API+-+Users docs.saucelabs.com/dev/api/accounts/#user-methods; - /display/DOCS/Test+Activity+and+Usage+Methods docs.saucelabs.com/dev/api/accounts/; - /display/DOCS/Tunnel+Methods docs.saucelabs.com/dev/api/connect/; - /display/DOCS/Sauce+Insights+Methods docs.saucelabs.com/dev/api/insights/; - /display/DOCS/Job+Methods docs.saucelabs.com/dev/api/jobs/; - /display/DOCS/Rest+API docs.saucelabs.com/dev/api/performance/; - /display/DOCS/Performance+methods docs.saucelabs.com/dev/api/performance/; - /display/DOCS/Platform+Information+Methods docs.saucelabs.com/dev/api/platform/; - /display/DOCS/Mobile+App+Testing+API docs.saucelabs.com/dev/api/rdc/; - /display/DOCS/Accessing+the+Mobile+App+Testing+API docs.saucelabs.com/dev/api/rdc/; - /display/DOCS/Device+Methods+-+Real+Devices docs.saucelabs.com/dev/api/rdc/; - /display/DOCS/Job+Methods+-+Real+Devices docs.saucelabs.com/dev/api/rdc/; - /display/DOCS/Temporary+Storage+Methods docs.saucelabs.com/dev/api/storage/; - /display/DOCS/Command+Reference+for+Sauce+Runner+for+Real+Devices docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Examples+of+Device+Specifications+for+the+Real+Device+Runner docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Command+Reference+for+Sauce+Runner+for+Virtual+Devices docs.saucelabs.com/mobile-apps/automated-testing/espresso-xcuitest/; - /display/DOCS/Adding+Teams+-+Extended+Team+Management docs.saucelabs.com/basics/acct-team-mgmt/adding-deleting-teams/; - /display/DOCS/Analytics+Methods docs.saucelabs.com/dev/api/insights/; - /display/DOCS/Examples+of+Test+Configuration+Options+for+Mobile+Native+Application+Tests docs.saucelabs.com/mobile-apps/automated-testing/appium/real-devices/; - /display/DOCS/Sauce+Labs+Glossary docs.saucelabs.com/dev/glossary/; - /display/DOCS/Maintenance+Windows+for+the+Sauce+Labs+European+Data+Center docs.saucelabs.com/dev/data-center-maint/; - /display/DOCS/Maintenance+Windows+for+the+Sauce+Labs+US+Data+Center docs.saucelabs.com/dev/data-center-maint/; - /display/DOCS/A+Failure+Occurred+While+Attempting+to+Upload+the+Video docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Abuse+Job docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Failed+to+Download+Mobile+Application docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Invalid+Parent+Tunnel docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Selenium+Didn%27t+Complete+Your+Last+Command+on+Time docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Test+Didn%27t+See+a+New+Command+for+90+Seconds docs.saucelabs.com/dev/error-messages/; - /display/DOCS/Test+Exceeded+Maximum+Duration+of+1800+Seconds docs.saucelabs.com/dev/error-messages/; - /display/DOCS/The+Connection+with+Your+Virtual+Machine+was+Lost+and+Your+Job+Can%27t+Complete docs.saucelabs.com/dev/error-messages/; - /display/DOCS/The+Requested+Combination+of+Browser%2C+Version%2C+and+Operating+System+is+Not+Supported docs.saucelabs.com/dev/error-messages/; - /display/DOCS/The+Sauce+Labs+Virtual+Machine+Failed+to+Start+the+Browser+or+Device docs.saucelabs.com/dev/error-messages/; - /display/DOCS/The+Virtual+Machine%27s+Disk+has+Filled+Up docs.saucelabs.com/dev/error-messages/; - /display/DOCS/User+Terminated docs.saucelabs.com/dev/error-messages/; - /display/DOCS/You%27ve+Exceeded+Your+Sauce+Labs+Concurrency+Limit docs.saucelabs.com/dev/error-messages/; - - # <---------------test results section---------------> - /display/DOCS/Viewing+and+Managing+Test+Results docs.saucelabs.com/test-results/viewing-test-results/; - /display/DOCS/Viewing+Screenshots%2C+Commands%2C+Logs%2C+and+Metadata+for+Test+Results docs.saucelabs.com/test-results/viewing-test-results/; - /display/DOCS/Enhanced+Test+Details+Page docs.saucelabs.com/test-results/viewing-test-results/; - /display/DOCS/Using+Favorites+to+Save+Your+Searches docs.saucelabs.com/test-results/managing-test-results/; - /display/DOCS/Deleting+Test+and+Build+Results docs.saucelabs.com/test-results/managing-test-results/; - /display/DOCS/Changing+the+Layout+of+Your+Archives+Page docs.saucelabs.com/test-results/managing-test-results/; - /display/DOCS/Managing+the+Results+of+Automated+Builds+and+Automated+Tests docs.saucelabs.com/test-results/managing-test-results/; - /display/DOCS/Search+Fields+and+Operators docs.saucelabs.com/test-results/managing-test-results/; - /display/DOCS/Sharing+the+Results+of+Sauce+Labs+Test docs.saucelabs.com/test-results/sharing-test-results/; - /display/DOCS/Building+Sharable+Links+to+Test+Results docs.saucelabs.com/test-results/sharing-test-results/; - /display/DOCS/Embedding+Test+Results+in+HTML+Pages docs.saucelabs.com/test-results/sharing-test-results/; - /display/DOCS/Managing+Archived+Test+and+Build+Results docs.saucelabs.com/test-results/archived-test-results/; - /display/DOCS/Searching+for+Test+Results+and+Builds+on+Your+Archive+Page docs.saucelabs.com/test-results/archived-test-results/; - /display/DOCS/Using+Status+Badges+and+the+Browser+Matrix+Widget+to+Monitor+Test+Results docs.saucelabs.com/test-results/badges-browser-matrix/; - - # <---------------Community redirect section---------------> - /display/DOCS/Basic+HTTP+Authentication community.saucelabs.com/unit-testing-friends-6/best-practice-handling-authentication-164; - /display/DOCS/Best+Practice%3A+Avoid+Dependencies+between+Tests+to+Run+Tests+in+Parallel community.saucelabs.com/unit-testing-friends-6/best-practice-avoid-dependencies-between-tests-to-run-tests-in-parallel-148; - /display/DOCS/Best+Practice%3A+Avoid+External+Test+Dependencies community.saucelabs.com/unit-testing-friends-6/best-practice-avoid-external-test-dependencies-149; - /display/DOCS/Best+Practice%3A+Avoid+Leakage+of+Credentials community.saucelabs.com/unit-testing-friends-6/best-practice-avoid-leakage-of-credentials-158; - /display/DOCS/Best+Practice%3A+Be+Aware+of+the+Load+on+Your+Servers community.saucelabs.com/quality-strategies-45/best-practice-be-aware-of-the-load-on-your-servers-159; - /display/DOCS/Best+Practice%3A+Don%27t+Use+Brittle+Locators+in+Your+Tests community.saucelabs.com/selenium-appium-59/best-practice-avoid-brittle-locators-151; - /display/DOCS/Best+Practice%3A+Have+a+Retry+Strategy+for+Handling+Flakes community.saucelabs.com/unit-testing-friends-6/best-practice-have-a-retry-strategy-for-handling-flakes-155; - /display/DOCS/Best+Practice%3A+Imperative+v.+Declarative+Testing+Scenarios community.saucelabs.com/unit-testing-friends-6/best-practice-imperative-v-declarative-testing-scenarios-160; - /display/DOCS/Best+Practice%3A+Keep+Functional+Tests+Separate+from+Performance+Tests community.saucelabs.com/unit-testing-friends-6/best-practice-keep-functional-tests-separate-from-performance-tests-150; - /display/DOCS/Best+Practice%3A+Use+Breakpoints+to+Diagnose+Flaky+Tests community.saucelabs.com/unit-testing-friends-6/best-practice-use-breakpoints-to-diagnose-flaky-tests-on-sauce-labs-156; - /display/DOCS/Best+Practice%3A+Use+Explicit+Waits community.saucelabs.com/unit-testing-friends-6/best-practice-use-explicit-waits-152; - /display/DOCS/Best+Practice%3A+Use+Maven+to+Manage+Project+Dependencies community.saucelabs.com/unit-testing-friends-6/best-practice-use-maven-to-manage-project-dependencies-161; - /display/DOCS/Best+Practice%3A+Use+New+Accounts+For+Each+Test community.saucelabs.com/unit-testing-friends-6/best-practice-use-new-accounts-for-each-test-157; - /display/DOCS/Best+Practice%3A+Use+Page+Objects+to+Model+Repeated+Interactions+and+Elements community.saucelabs.com/unit-testing-friends-6/best-practice-use-page-objects-to-model-repeated-interactions-and-elements-162; - /display/DOCS/Best+Practice%3A+Use+the+Latest+Version+of+Selenium+Client+Bindings community.saucelabs.com/unit-testing-friends-6/best-practice-use-the-latest-version-of-selenium-client-bindings-153; - /display/DOCS/Best+Practices%3A+Use+Small%2C+Atomic%2C+Autonomous+Tests community.saucelabs.com/unit-testing-friends-6/best-practices-use-small-atomic-autonomous-tests-154; - /display/DOCS/Handling+Authentication community.saucelabs.com/unit-testing-friends-6/best-practice-handling-authentication-164; - /display/DOCS/Injecting+Cookies+to+Bypass+Authentication+Dialogs community.saucelabs.com/unit-testing-friends-6/best-practice-handling-authentication-164; - /display/DOCS/Tips+for+Lean%2C+Speedy+Tests+with+Sauce+Labs community.saucelabs.com/quality-strategies-45/best-practice-tips-for-lean-speedy-tests-with-sauce-labs-165; - - # <---------------Sauce School section---------------> - /display/DOCS/Selenium+Bootcamp+1%3A+The+First+Things+You+Need+to+Know training.saucelabs.com/; - /display/DOCS/Selenium+Bootcamp+2%3A+Writing+Your+First+Selenium+Test training.saucelabs.com/; - /display/DOCS/Selenium+Bootcamp+3%3A+How+to+Write+Maintainable+Tests training.saucelabs.com/; - /display/DOCS/Selenium+Bootcamp+4%3A+Writing+Resilient+Test+Code training.saucelabs.com/; - /display/DOCS/Selenium+Bootcamp+5%3A+Packaging+for+Use?src=sidebar training.saucelabs.com/?src=sidebar; - /display/DOCS/Selenium+Bootcamp+by+Dave+Haeffner training.saucelabs.com/; - /display/DOCS/Appium+Bootcamp+1%3A+Getting+Started training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Appium+Bootcamp+3%3A+Interrogating+Your+App training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Appium+Bootcamp+4%3A+Your+First+Test training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Appium+Bootcamp+5%3A+Writing+and+Refactoring+Your+Tests training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Appium+Bootcamp+6%3A+Running+Your+Tests training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Appium+Bootcamp+by+Dave+Haeffner+and+Matthew+Edwards training.saucelabs.com/codelabs/Module2-Quickstart/index.html?index=..%2F..quickstart#0; - /display/DOCS/Things+That+Can+Go+Wrong+with+Running+Java+Tests+in+Parallel%2C+and+How+to+Debug+Them training.saucelabs.com/SeleniumJava/; - /display/DOCS/Best+Practices+for+Running+Tests+with+Java training.saucelabs.com/SeleniumJava/; - - # <---------------Status Page ---------------> - /display/DOCS/status+page+experiment status.saucelabs.com/; - /pages/viewpage.action?pageId=48365834 docs.saucelabs.com/dev/api/platform/; - - # <---------------Company Website Redirects ---------------> - /display/DOCS/Supported+Android+Emulators saucelabs.com/platform/platform-configurator/; - /display/DOCS/Supported+Browsers+and+Operating+Systems+for+the+Sauce+Labs+Application saucelabs.com/platform/platform-configurator/; - #<----------------End of File------------------------------> -} diff --git a/tests/sauce-docs-checker/package-lock.json b/tests/sauce-docs-checker/package-lock.json deleted file mode 100644 index eeb94a79da..0000000000 --- a/tests/sauce-docs-checker/package-lock.json +++ /dev/null @@ -1,881 +0,0 @@ -{ - "name": "saucedocs-crawler", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "saucedocs-crawler", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@actions/core": "^1.7.0", - "axios": "^1.7.4", - "cheerio": "^1.0.0-rc.10", - "fast-csv": "^4.3.6", - "moment": "^2.29.1", - "wait-on": "7.2.0" - } - }, - "node_modules/@actions/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", - "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", - "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" - } - }, - "node_modules/@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", - "dependencies": { - "tunnel": "^0.0.6" - } - }, - "node_modules/@fast-csv/format": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", - "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", - "dependencies": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isboolean": "^3.0.3", - "lodash.isequal": "^4.5.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0" - } - }, - "node_modules/@fast-csv/parse": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", - "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", - "dependencies": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.groupby": "^4.6.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0", - "lodash.isundefined": "^3.0.1", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@types/node": { - "version": "14.18.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.26.tgz", - "integrity": "sha512-0b+utRBSYj8L7XAp0d+DX7lI4cSmowNaaTkk6/1SKzbKkG+doLuPusB9EOvzLJ8ahJSk03bTLIL6cWaEd4dBKA==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/fast-csv": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", - "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", - "dependencies": { - "@fast-csv/format": "4.3.5", - "@fast-csv/parse": "4.3.6" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "node_modules/joi": { - "version": "17.12.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", - "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "node_modules/lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "node_modules/lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" - }, - "node_modules/lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "engines": { - "node": "*" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", - "dependencies": { - "entities": "^4.3.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", - "dependencies": { - "axios": "^1.6.1", - "joi": "^17.11.0", - "lodash": "^4.17.21", - "minimist": "^1.2.8", - "rxjs": "^7.8.1" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=12.0.0" - } - } - }, - "dependencies": { - "@actions/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", - "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", - "requires": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" - } - }, - "@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", - "requires": { - "tunnel": "^0.0.6" - } - }, - "@fast-csv/format": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", - "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isboolean": "^3.0.3", - "lodash.isequal": "^4.5.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0" - } - }, - "@fast-csv/parse": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz", - "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", - "requires": { - "@types/node": "^14.0.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.groupby": "^4.6.0", - "lodash.isfunction": "^3.0.9", - "lodash.isnil": "^4.0.0", - "lodash.isundefined": "^3.0.1", - "lodash.uniq": "^4.5.0" - } - }, - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "requires": { - "@hapi/hoek": "^9.0.0" - } - }, - "@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@types/node": { - "version": "14.18.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.26.tgz", - "integrity": "sha512-0b+utRBSYj8L7XAp0d+DX7lI4cSmowNaaTkk6/1SKzbKkG+doLuPusB9EOvzLJ8ahJSk03bTLIL6cWaEd4dBKA==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==" - }, - "fast-csv": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz", - "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", - "requires": { - "@fast-csv/format": "4.3.5", - "@fast-csv/parse": "4.3.6" - } - }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "joi": { - "version": "17.12.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", - "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", - "requires": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, - "lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" - }, - "lodash.isnil": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", - "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" - }, - "lodash.isundefined": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", - "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "parse5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz", - "integrity": "sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==", - "requires": { - "entities": "^4.3.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "requires": { - "tslib": "^2.1.0" - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", - "requires": { - "axios": "^1.6.1", - "joi": "^17.11.0", - "lodash": "^4.17.21", - "minimist": "^1.2.8", - "rxjs": "^7.8.1" - } - } - } -} diff --git a/tests/sauce-docs-checker/package.json b/tests/sauce-docs-checker/package.json deleted file mode 100644 index 525e29a1d2..0000000000 --- a/tests/sauce-docs-checker/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "saucedocs-crawler", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "wait-on http://127.0.0.1:8000 && node index.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/saucelabs/saucedocs-crawler.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/saucelabs/saucedocs-crawler/issues" - }, - "homepage": "https://github.com/saucelabs/saucedocs-crawler#readme", - "dependencies": { - "@actions/core": "^1.7.0", - "axios": "^1.7.4", - "cheerio": "^1.0.0-rc.10", - "fast-csv": "^4.3.6", - "moment": "^2.29.1", - "wait-on": "7.2.0" - } -} diff --git a/tests/sauce-docs-checker/test.js b/tests/sauce-docs-checker/test.js deleted file mode 100644 index f1723c1f78..0000000000 --- a/tests/sauce-docs-checker/test.js +++ /dev/null @@ -1,15 +0,0 @@ -let axios = require('axios'); - -run() - -async function run() { - let url = 'https://wiki.jenkins-ci.org/display/JENKINS/JenkinsBehindProxy' - let res - try { - res = await axios.get(url) - } - catch(err) { - console.log('RESULT',res) - console.log(err) - } -}