diff --git a/.github/workflows/links_checker.yml b/.github/workflows/links_checker.yml index c02921d96f91..a34b7bdbf829 100644 --- a/.github/workflows/links_checker.yml +++ b/.github/workflows/links_checker.yml @@ -11,21 +11,13 @@ on: jobs: linkchecker: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Load Excludes - run: | - LYCHEE_EXCLUDE=$(sed -e :a -e 'N;s/\n/ --exclude /;ta' .lycheeexclude) - echo "LYCHEE_EXCLUDE=$LYCHEE_EXCLUDE" >> $GITHUB_ENV + - uses: actions/checkout@v4 - name: Lychee Link Checker - id: lychee - uses: lycheeverse/lychee-action@v1.0.9 + uses: lycheeverse/lychee-action@v1 with: - args: --accept=200,403,429 --exclude ${{ env.LYCHEE_EXCLUDE }} --exclude-mail "**/*.html" "**/*.md" "**/*.txt" "**/*.json" "**/*.js" "**/*.ts" "**/*.tsx" + fail: true + args: --accept=200,403,429 --base . --retry-wait-time=15 --max-retries=5 "**/*.html" "**/*.md" "**/*.txt" "**/*.json" "**/*.js" "**/*.ts" "**/*.tsx" env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - name: Fail if there were link errors - run: exit ${{ steps.lychee.outputs.exit_code }} \ No newline at end of file diff --git a/.lycheeexclude b/.lycheeexclude deleted file mode 100644 index e8e86359b462..000000000000 --- a/.lycheeexclude +++ /dev/null @@ -1,129 +0,0 @@ -# Copyright OpenSearch Contributors -# SPDX-License-Identifier: Apache-2.0 - -# Local or predefined end points -http://localhost -https://localhost -http://127.0.0.1/ -https://127.0.0.1/ -http://127.0.0.1:10002/bar -http://127.0.0.1:10002/ -http://opensearch -https://opensearch -https://opensearch-dashboards -http://opensearch-dashboards -https://opensearch.internal.org/ -https://maps.search-services.aws.a2z.com/ -https://tiles.maps.search-services.aws.a2z.com/ -https://telemetry.opensearch.org/ -https://telemetry-staging.opensearch.org/ -https://api.github.com/repos/opensearch-project/OpenSearch-Dashboards/ -https://www.quandl.com/api/v1/datasets/ -file:///* -git://* - -# Dummy urls in tests -http://domain. -http://www.domain. -http://somehost -https://somehost -http://some.host -https://some-host.com/ -https://other.some-host.com/ -http://test:user@somehost/ -https://some.another.host/ -http://noone.nowhere.none/ -http://bar -http://foo -http://test.com/ -https://test.com/ -https://manifest.foobar -https://files.foobar/ -https://tiles.foobar/ -https://1.1.1.1:9200/ -http://192.168.1.1:1234/ -http://9.8.7.6/ -http://1.2.3.4/ -http://8.8.8.8/ -https://path.to/ -https://example.com/ -http://example.com/ -https://example.org/ -http://some-url/ -http://buildurl/ -https://dryrun/ -https://url/ -http://url/ -http://notfound.svg/ -https://validurl/ -https://myopensearch-dashboardsdomain.com -http://myopensearch-dashboardsdomain.com -https://other-opensearch-dashboards.external:8080/ -http://myotherdomain.com:5601/ -http://myopensearch-dashboardsdomain.com:5601/ -https://your-cdn-host.com/ -http://not-your-opensearch-dashboards.com/ -http://www.mysite.com/ -http://myserver.mydomain.com:5601/ -https://myexternaldep.com/ -http://notlocalhost/ -http://site.com/ -http://node-b/ -http://node-a:9200/ -https://node-c/ -https://elsewhere -https://opensearch:changeme@example.com:9200 -http://test:user@somehost/ -https://mycloudinstance:9200/ -https://dev-url.co/ -https://extenal.org/_search -http://plugins.example.com/ -https://build-url/ -http://test.com/ -https://path.to/ -http://site.com/ -http://not-your-opensearch-dashboards.com/ -http://evil.com/ -https://opensearch.org/cool/path -https://opensearch.org/redirect -http://www.opensearch.org/painlessDocs -https://www.hostedgraphite.com/ -https://connectionurl.com -http://169.254.169.254/latest/meta-data/ -http://company.net/* -http://fakenews.co/opensearch-dashboards-test/v6.8.2.json - -# External urls -https://www.zeek.org/ -http://google.com/ -https://api.worldbank.org/ -https://vega.github.io/ -http://twitter.com/ -https://twitter.com/ -https://storage.googleapis.com/ -http://tools.ietf.org/ -https://github.com/ -http://github.com/ -http://jsperf -https://jsperf -https://gist.githubusercontent.com/ -https://codeload.github.com/gist/ -https://nodejs.org/ -https://www.npmjs.com/ -https://microsoft.github.io/ -http://api.worldbank.org/ -https://f1542b814f674090afd914960583265f.apm.us-central1.gcp.cloud.es.io/ -http://www.matthewcopeland.me/ -http://threedubmedia.googlecode.com/* -https://developer.mozilla.org/ -https://a.tile.openstreetmap.org/ -http://www.creedthoughts.gov -https://media-for-the-masses.theacademyofperformingartsandscience.org/ -https://yarnpkg.com/latest.msi -https://forum.opensearch.org/ -https://facebook.github.io/jest/* -http://helpmenow.com/problem2 -https://sass-lang.com/* -http://api.jquery.com/* -http://brandonaaron.net -https://www.circl.lu/doc/misp/ diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 000000000000..f137249df419 --- /dev/null +++ b/.lycheeignore @@ -0,0 +1,89 @@ +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 + +# Local or predefined end points +localhost +//opensearch +//telemetry.*\.opensearch\.org/ +https://api.github.com/repos/opensearch-project/OpenSearch-Dashboards/ +file:///* +git://* + +# Dummy urls in tests and examples +//(www\.)?domain +//foo +//bar +//test +//notfound +//asdf +//elsewhere +//build-?url +//dev-url +//some-url +//validurl +//path\.to/ +//evil\.com/ +//dryrun/ +//codeload/ +//user/ +//www/ +//url/ +some.*host +//node-.(:\d+)?/ +//company\.net/ +//noone\.nowhere\.none +\.foobar/ +opensearch\.org/painlessDocs +//myexternaldep\.com +//extenal\.org +//mycloudinstance +mysite\.com +//fakeendpoint +https://ci.opensearch.org/ci/dbc/distribution-build-opensearch-dashboards/ +https://artifacts-api.opensearch.org/ +https://on.cypress.io/ +//\d+\.\d+\.\d+\.\d+(:\d+)?/ +\.external: +//myopensearch-dashboardsdomain\.com +https://build.ci.opensearch.org/job/integ-test-opensearch-dashboards/ +http://www.creedthoughts.gov +//feeds(-staging)?\.opensearch\.org/ +http://not-your-opensearch-dashboards.com/ +my(other)?domain\.com + + + +# External urls +https://connectionurl.com/ +https://www.hostedgraphite.com/ +http://google.com/ +https://api.worldbank.org/ +https://vega.github.io/ +//twitter.com/ +https://storage.googleapis.com/ +http://tools.ietf.org/ +//github.com/ +//jsperf +https://nodejs.org/ +https://mirrors.nodejs.org/ +https://www.npmjs.com/ +https://microsoft.github.io/ +http://api.worldbank.org/ +https://f1542b814f674090afd914960583265f.apm.us-central1.gcp.cloud.es.io/ +http://threedubmedia.googlecode.com/ +https://developer.mozilla.org/ +https://a.tile.openstreetmap.org/ +https://media-for-the-masses.theacademyofperformingartsandscience.org/ +https://forum.opensearch.org/ +http://api.jquery.com/ +http://brandonaaron.net/ +https://oss-dependencies.opensearch.org/ +https://tiles.maps.opensearch.org/ +https://playground.opensearch.org/ +http://threedubmedia.com/ +https://gist.githubusercontent.com/ +https://your-cdn-host.com/ +https://unpkg.com/@elastic/ +https://codeload.github.com/ +https://www.quandl.com/api/v1/datasets/ +https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi diff --git a/CHANGELOG.md b/CHANGELOG.md index c395cad4054f..6b9a0b11f941 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -143,6 +143,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Re-enable CI workflows for feature branches ([#2908](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2908)) - [Tests] Add Github workflow for Test Orchestrator in FT Repo to run cypress tests within Dashboards repo ([#5725](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5725)) - Upgrade yarn version to be compatible with @opensearch-project/opensearch ([#3443](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/3443)) +- Update link-checker and clean up ignore-list ([#6425](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6425)) ### 📝 Documentation diff --git a/test/functional/services/common/browser.ts b/test/functional/services/common/browser.ts index 6a49ae0a67ad..48e1f12e02da 100644 --- a/test/functional/services/common/browser.ts +++ b/test/functional/services/common/browser.ts @@ -70,7 +70,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Returns instance of Actions API based on driver w3c flag - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#actions + * https://www.selenium.dev/documentation/webdriver/actions_api/ */ public getActions() { return driver.actions(); @@ -89,8 +89,8 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { } /** - * Retrieves the a rect describing the current top-level window's size and position. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Window.html + * Retrieves the rect describing the current top-level window's size and position. + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#get-window-size * * @return {Promise<{height: number, width: number, x: number, y: number}>} */ @@ -100,7 +100,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Sets the dimensions of a window. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Window.html + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#set-window-size * * @param {number} width * @param {number} height @@ -166,7 +166,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Gets the URL that is loaded in the focused window/frame. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#getCurrentUrl + * https://www.selenium.dev/documentation/webdriver/interactions/#get-current-url * * @return {Promise} */ @@ -182,7 +182,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Gets the page/document title of the focused window/frame. - * https://www.selenium.dev/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html#getTitle + * https://www.selenium.dev/documentation/webdriver/interactions/#get-title */ public async getTitle() { return await driver.getTitle(); @@ -190,7 +190,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Navigates the focused window/frame to a new URL. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/chrome_exports_Driver.html#get + * https://www.selenium.dev/documentation/webdriver/interactions/navigation/#navigate-to * * @param {string} url * @param {boolean} insertTimestamp Optional @@ -211,7 +211,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Moves the remote environment’s mouse cursor to the specified point {x, y} which is * offset to browser page top left corner. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#move + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#offset-from-viewport * * @param {x: number, y: number} point on browser page * @return {Promise} @@ -223,7 +223,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Does a drag-and-drop action from one point to another - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#dragAndDrop + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#drag-and-drop-by-offset * * @param {{element: WebElementWrapper | {x: number, y: number}, offset: {x: number, y: number}}} from * @param {{element: WebElementWrapper | {x: number, y: number}, offset: {x: number, y: number}}} to @@ -251,7 +251,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Reloads the current browser window/frame. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Navigation.html#refresh + * https://www.selenium.dev/documentation/webdriver/interactions/navigation/#refresh * * @return {Promise} */ @@ -261,7 +261,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Navigates the focused window/frame back one page using the browser’s navigation history. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Navigation.html#back + * https://www.selenium.dev/documentation/webdriver/interactions/navigation/#back * * @return {Promise} */ @@ -271,7 +271,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Moves forwards in the browser history. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Navigation.html#forward + * https://www.selenium.dev/documentation/webdriver/interactions/navigation/#forward * * @return {Promise} */ @@ -281,7 +281,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Navigates to a URL via the browser history. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Navigation.html#to + * https://www.selenium.dev/documentation/webdriver/interactions/navigation/#navigate-to * * @return {Promise} */ @@ -291,7 +291,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Sends a sequance of keyboard keys. For each key, this will record a pair of keyDown and keyUp actions - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#sendKeys + * https://www.selenium.dev/documentation/webdriver/actions_api/keyboard/#send-keys * * @param {string|string[]} keys * @return {Promise} @@ -307,7 +307,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { * Moves the remote environment’s mouse cursor to the specified point {x, y} which is * offset to browser page top left corner. * Then adds an action for left-click (down/up) with the mouse. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#click + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#click-and-release * * @param {x: number, y: number} point on browser page * @return {Promise} @@ -323,7 +323,6 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Gets the HTML loaded in the focused window/frame. This markup is serialised by the remote * environment so may not exactly match the HTML provided by the Web server. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#getPageSource * * @return {Promise} */ @@ -333,7 +332,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Gets a screenshot of the focused window and returns it as a base-64 encoded PNG - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#takeScreenshot + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#takescreenshot * * @return {Promise} */ @@ -343,7 +342,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Inserts action for performing a double left-click with the mouse. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#doubleClick + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#double-click * @param {WebElementWrapper} element * @return {Promise} */ @@ -354,7 +353,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Changes the focus of all future commands to another window. Windows may be specified * by their window.name attributeor by its handle (as returned by WebDriver#getWindowHandles). - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_TargetLocator.html + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#switching-windows-or-tabs * * @param {string} handle * @return {Promise} @@ -365,7 +364,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Gets a list of identifiers for all currently open windows. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#getAllWindowHandles + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#switching-windows-or-tabs * * @return {Promise} */ @@ -414,7 +413,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Closes the currently focused window. In most environments, after the window has been * closed, it is necessary to explicitly switch to whatever window is now focused. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#close + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#closing-a-window-or-tab * * @return {Promise} */ @@ -424,7 +423,7 @@ export async function BrowserProvider({ getService }: FtrProviderContext) { /** * Executes JavaScript code within the focused window/frame. The code should return a value synchronously. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebDriver.html#executeScript + * https://www.selenium.dev/documentation/webdriver/interactions/windows/#execute-script * * @param {string|function} fn * @param {...any[]} args diff --git a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts index fa273b318a24..8a2515d413b0 100644 --- a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts +++ b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts @@ -165,7 +165,7 @@ export class WebElementWrapper { * - Elements with opacity: 0 * - Elements with no offsetWidth or offsetHeight * - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isDisplayed + * https://www.selenium.dev/documentation/webdriver/elements/information/#is-displayed * * @return {Promise} */ @@ -177,7 +177,7 @@ export class WebElementWrapper { /** * Tests whether this element is enabled, as dictated by the disabled attribute. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isEnabled + * https://www.selenium.dev/documentation/webdriver/elements/information/#is-enabled * * @return {Promise} */ @@ -189,7 +189,7 @@ export class WebElementWrapper { /** * Tests whether this element is selected. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#isSelected + * https://www.selenium.dev/documentation/webdriver/elements/information/#is-selected * * @return {Promise} */ @@ -201,7 +201,7 @@ export class WebElementWrapper { /** * Clicks on this element. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#click + * https://www.selenium.dev/documentation/webdriver/elements/interactions/#click * * @return {Promise} */ @@ -238,7 +238,7 @@ export class WebElementWrapper { /** * Clear the value of this element. This command has no effect if the underlying DOM element * is neither a text INPUT element nor a TEXTAREA element. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#clear + * https://www.selenium.dev/documentation/webdriver/elements/interactions/#clear * * @param {{ withJS: boolean }} options option to clear input with JS: `arguments[0].value=''` * @default { withJS: false } @@ -292,7 +292,7 @@ export class WebElementWrapper { * The input.Key.NULL key is encountered in the sequence. When this key is encountered, all * modifier keys current in the down state are released (with accompanying keyup events). The NULL * key can be used to simulate common keyboard shortcuts. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#sendKeys + * https://www.selenium.dev/documentation/webdriver/elements/interactions/#send-keys * * @param {string|string[]} value * @param {charByChar: boolean} options @@ -315,7 +315,7 @@ export class WebElementWrapper { /** * Sends keyboard event into the element. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#sendKeys + * https://www.selenium.dev/documentation/webdriver/elements/interactions/#send-keys * * @param {string|string[]} keys * @return {Promise} @@ -340,7 +340,7 @@ export class WebElementWrapper { * case the value of the property with the same name is returned. If neither value is set, null * is returned (for example, the "value" property of a textarea element). The "style" attribute * is converted as best can be to a text representation with a trailing semi-colon. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getAttribute + * https://www.selenium.dev/documentation/webdriver/elements/information/#fetching-attributes-or-properties * * @param {string} name */ @@ -354,7 +354,7 @@ export class WebElementWrapper { * Retrieves the value of a computed style property for this instance. If the element inherits * the named style from its parent, the parent will be queried for its value. Where possible, * color values will be converted to their hex representation (e.g. #00ff00 instead of rgb(0, 255, 0)). - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getCssValue + * https://www.selenium.dev/documentation/webdriver/elements/information/#get-css-value * * @param {string} propertyName * @return {Promise} @@ -368,7 +368,7 @@ export class WebElementWrapper { /** * Get the visible (i.e. not hidden by CSS) innerText of this element, including sub-elements, * without any leading or trailing whitespace. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getText + * https://www.selenium.dev/documentation/webdriver/elements/information/#text-content * * @return {Promise} */ @@ -380,7 +380,7 @@ export class WebElementWrapper { /** * Retrieves the element's tag name. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getTagName + * https://www.selenium.dev/documentation/webdriver/elements/information/#tag-name * * @return {Promise} */ @@ -395,7 +395,7 @@ export class WebElementWrapper { /** * Returns an object describing an element's location, in pixels relative to the document element, * and the element's size in pixels. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getRect + * https://www.selenium.dev/documentation/webdriver/elements/information/#size-and-position * * @return {Promise<{height: number, width: number, x: number, y: number}>} */ @@ -408,7 +408,7 @@ export class WebElementWrapper { /** * Returns an object describing an element's location, in pixels relative to the document element, * and the element's size in pixels. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#getRect + * https://www.selenium.dev/documentation/webdriver/elements/information/#size-and-position * * @return {Promise<{height: number, width: number, x: number, y: number}>} */ @@ -420,7 +420,7 @@ export class WebElementWrapper { /** * Moves the remote environment’s mouse cursor to the current element with optional offset - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#move + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#move-by-offset * @param { xOffset: 0, yOffset: 0 } options * @return {Promise} */ @@ -438,7 +438,7 @@ export class WebElementWrapper { /** * Inserts an action for moving the mouse to element center, unless optional offset is provided. * Then adds an action for left-click (down/up) with the mouse. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#click + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#click-and-release * * @param { xOffset: 0, yOffset: 0 } options Optional * @return {Promise} @@ -457,7 +457,7 @@ export class WebElementWrapper { /** * Inserts action for performing a double left-click with the mouse. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html#doubleClick + * https://www.selenium.dev/documentation/webdriver/actions_api/mouse/#double-click * @param {WebElementWrapper} element * @return {Promise} */ @@ -470,7 +470,7 @@ export class WebElementWrapper { /** * Gets the first element inside this element matching the given CSS selector. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#first-matching-element * * @param {string} selector * @return {Promise} @@ -486,7 +486,7 @@ export class WebElementWrapper { /** * Gets all elements inside this element matching the given CSS selector. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#all-matching-elements * * @param {string} selector * @param {number} timeout @@ -539,7 +539,7 @@ export class WebElementWrapper { /** * Gets the first element inside this element matching the given CSS class name. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#first-matching-element * * @param {string} className * @return {Promise} @@ -555,7 +555,7 @@ export class WebElementWrapper { /** * Gets all elements inside this element matching the given CSS class name. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#all-matching-elements * * @param {string} className * @param {number} timeout @@ -574,7 +574,7 @@ export class WebElementWrapper { /** * Gets the first element inside this element matching the given tag name. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#first-matching-element * * @param {string} tagName * @return {Promise} @@ -594,7 +594,7 @@ export class WebElementWrapper { /** * Gets all elements inside this element matching the given tag name. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#all-matching-elements * * @param {string} tagName * @param {number} timeout @@ -621,7 +621,7 @@ export class WebElementWrapper { /** * Gets the first element inside this element matching the given XPath selector. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#first-matching-element * * @param {string} selector * @return {Promise} @@ -637,7 +637,7 @@ export class WebElementWrapper { /** * Gets all elements inside this element matching the given XPath selector. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#all-matching-elements * * @param {string} selector * @param {number} timeout @@ -656,7 +656,7 @@ export class WebElementWrapper { /** * Gets the first element inside this element matching the given partial link text. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#first-matching-element * * @param {string} linkText * @return {Promise} @@ -672,7 +672,7 @@ export class WebElementWrapper { /** * Gets all elements inside this element matching the given partial link text. - * https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_WebElement.html#findElement + * https://www.selenium.dev/documentation/webdriver/elements/finders/#all-matching-elements * * @param {string} linkText * @param {number} timeout