Skip to content

Commit

Permalink
fix(medic#9732): address review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
paulpascal committed Jan 28, 2025
1 parent c73bd10 commit 2afbb8d
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 1 deletion.
2 changes: 1 addition & 1 deletion api/src/templates/privacy-policy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<div>
<h1>{{ translations.title }}</h1>
</div>
<div>
<div id="privacy-policy-content">
{{ policy }}
</div>
<div>
Expand Down
56 changes: 56 additions & 0 deletions tests/e2e/default/privacy-policy/login-privacy-policy.wdio-spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
const utils = require('@utils');
const commonPage = require('@page-objects/default/common/common.wdio.page.js');
const loginPage = require('@page-objects/default/login/login.wdio.page');
const privacyPolicyFactory = require('@factories/cht/settings/privacy-policy');
const loginPrivacyPolicyPage = require('@page-objects/default/privacy-policy/login-privacy-policy.wdio.page');

describe('Privacy Policy Navigation for Unauthenticated Users', () => {
const privacyPolicy = privacyPolicyFactory.privacyPolicy().build();

afterEach(async () => {
await utils.deleteAllDocs();
});

it('should not display privacy policy page when the privacy policy is not enabled', async () => {
await commonPage.reloadSession();

// Assert: privacy policy link is not available on the login page
const privacyPolicyLink = await loginPage.privacyPolicyPageLink();
expect(await privacyPolicyLink.isDisplayed()).to.equal(false);
});

it('should navigate back to the login page when using either back button', async () => {
await utils.saveDocs([privacyPolicy]);
await commonPage.reloadSession();

// Navigate to privacy policy page
await loginPage.goToPrivacyPolicyPage();
const privacyContent = await loginPrivacyPolicyPage.privacyContent();
expect(await privacyContent.isDisplayed()).to.equal(true);

// Test navigation using both back buttons
const testBackButton = async (backButtonType) => {
let backButton;

if (backButtonType === 'top') {
backButton = await loginPrivacyPolicyPage.topBackButton();
} else if (backButtonType === 'bottom') {
await loginPrivacyPolicyPage.scrollToBottom();
backButton = await loginPrivacyPolicyPage.bottomBackButton();
}

// Click the back button
await loginPrivacyPolicyPage.goBackToLoginPage(backButton);

// Assert: back button redirects to the login page
expect((await browser.getUrl()).includes('/medic/login')).to.be.true;

// Navigate back to the privacy policy page for the next iteration
await loginPage.goToPrivacyPolicyPage();
};

// Run tests for both buttons
await testBackButton('top');
await testBackButton('bottom');
});
});
7 changes: 7 additions & 0 deletions tests/page-objects/default/login/login.wdio.page.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const labelForPassword = () => $('label[for="password"]');
const errorMessageField = () => $('p.error.incorrect');
const localeByName = (locale) => $(`.locale[name="${locale}"]`);
const tokenLoginError = (reason) => $(`.error.${reason}`);
const privacyPolicyPageLink = () => $('a[translate="privacy.policy"]');

const getErrorMessage = async () => {
await (await errorMessageField()).waitForDisplayed();
Expand Down Expand Up @@ -133,6 +134,10 @@ const setPasswordValue = async (password) => {
await (await passwordField()).setValue(password);
};

const goToPrivacyPolicyPage = async () => {
await (await privacyPolicyPageLink()).click();
};

module.exports = {
login,
cookieLogin,
Expand All @@ -147,4 +152,6 @@ module.exports = {
getErrorMessage,
togglePassword,
setPasswordValue,
privacyPolicyPageLink,
goToPrivacyPolicyPage
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const privacyContent = () => $('#privacy-policy-content');
const backButtons = () => $$('a.back-button');

const topBackButton = async () => {
return (await backButtons())[0];
};

const bottomBackButton = async () => {
return (await backButtons())[1];
};

const scrollToBottom = async () => {
await (await bottomBackButton()).scrollIntoView();
};

const goBackToLoginPage = async (backButton) => {
await (backButton).click();
};

module.exports = {
privacyContent,
topBackButton,
bottomBackButton,
scrollToBottom,
goBackToLoginPage
};

0 comments on commit 2afbb8d

Please sign in to comment.