passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
154 lines (137 loc) • 4.11 kB
JavaScript
/**
* Passbolt ~ Open source password manager for teams
* Copyright (c) 2023 Passbolt SA (https://www.passbolt.com)
*
* Licensed under GNU Affero General Public License version 3 of the or any later version.
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) 2023 Passbolt SA (https://www.passbolt.com)
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
* @link https://www.passbolt.com Passbolt(tm)
* @since 4.1.0
*/
import { render } from "@testing-library/react";
import React from "react";
import { MemoryRouter, Route } from "react-router-dom";
import ResourceViewPage from "./ResourceViewPage";
import MockTranslationProvider from "../../../react-extension/test/mock/components/Internationalisation/MockTranslationProvider";
import userEvent from "@testing-library/user-event";
/**
* The DisplayResourcesWorkspaceMainMenuPage component represented as a page
*/
export default class ResourceViewPagePage {
/**
* Default constructor
* @param props Props to attach
*/
constructor(props) {
this._page = render(
<MockTranslationProvider>
<MemoryRouter initialEntries={[props.initialEntries]}>
<Route path="/:id" component={(routerProps) => <ResourceViewPage {...props} {...routerProps} />} />
</MemoryRouter>
</MockTranslationProvider>,
);
this.user = userEvent.setup();
}
/**
* Returns true if the page is loaded.
* @returns {boolean}
*/
get isReady() {
return Boolean(this._page.container.querySelector(".property .property-name"));
}
/**
* The username button element.
* @returns {Element}
*/
get username() {
return this._page.container.querySelector(".property:first-child .property-name + a.property-value");
}
/**
* The uri element.
* @returns {Element}
*/
get uri() {
return this._page.container.querySelector(".property:last-child .property-name + a.property-value");
}
/**
* The password button element.
* @returns {Element}
*/
get password() {
return this._page.container.querySelector(".password-wrapper .secret.secret-password button");
}
/**
* The password text content.
* @returns {string}
*/
get passwordText() {
return this._page.container.querySelector(".password-wrapper .secret.secret-password button span").textContent;
}
/**
* The preview password button.
* @returns {Element}
*/
get previewPasswordButton() {
return this._page.container.querySelector(".password-wrapper .password-view");
}
/**
* The copy password button.
* @returns {Element}
*/
get copyPasswordButton() {
return this._page.container.querySelector(".copy-password");
}
/**
* The totp button element.
* @returns {Element}
*/
get totp() {
return this._page.container.querySelector(".totp-wrapper .secret.secret-totp button");
}
/**
* The password text content.
* @returns {string}
*/
get totpText() {
return this._page.container.querySelector(".totp-wrapper .secret.secret-totp button span").textContent;
}
/**
* The preview totp button.
* @returns {Element}
*/
get previewTotpButton() {
return this._page.container.querySelector(".totp-wrapper .totp-view");
}
/**
* The copy password button.
* @returns {Element}
*/
get copyTotpButton() {
return this._page.container.querySelector(".copy-totp");
}
/**
* The additonal uris button.
* @returns {Element}
*/
get additionalUrisSection() {
return this._page.container.querySelector(".accordion-header.additional-uris button");
}
/**
* The list uris.
* @returns {NodeListOf<Element>}
*/
get listUris() {
return this._page.container.querySelectorAll(".list-uris .property-value");
}
/**
* Click on the given element.
* @param {Element} element The element to click on.
* @returns {Promise<void>}
*/
async click(element) {
await this.user.click(element);
}
}