Files
freeCodeCamp/cypress/support/commands.ts
Oliver Eyton-Williams c772b9884a chore(deps): update Cypress to version 12 (#51622)
Co-authored-by: Naomi Carrigan <nhcarrigan@gmail.com>
2023-09-22 15:42:56 -05:00

67 lines
1.9 KiB
TypeScript

const login = (user?: string) => {
cy.session(user ?? 'new-user', () => {
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
cy.visit(`${Cypress.env('API_LOCATION')}/signin`);
cy.contains('Welcome back');
});
};
const setPrivacyTogglesToPublic = () => {
cy.get('#privacy-settings')
.find('[type=radio][value=2]')
.each(element => {
cy.wrap(element).parent().click();
cy.wrap(element).should('be.checked');
});
cy.get('[data-cy=save-privacy-settings]').click();
cy.get('#honesty-policy').find('button').click();
cy.contains('You have agreed to our Academic Honesty Policy');
};
const goToSettings = () => {
cy.visit('/settings');
// Setting aliases here
cy.get('[data-cy=username-input]').as('usernameInput');
cy.get('[data-cy=username-form]').as('usernameForm');
};
const typeUsername = (username: string) => {
cy.get('@usernameInput')
.clear({ force: true })
.type(username, { force: true });
};
const resetUsername = () => {
cy.goToSettings();
cy.typeUsername('developmentuser');
cy.contains('Username is available');
cy.get('@usernameInput').type('{enter}', { force: true, release: false });
cy.contains('Account Settings for developmentuser').should('be.visible');
};
Cypress.Commands.add('login', login);
Cypress.Commands.add('setPrivacyTogglesToPublic', setPrivacyTogglesToPublic);
Cypress.Commands.add('goToSettings', goToSettings);
Cypress.Commands.add('typeUsername', typeUsername);
Cypress.Commands.add('resetUsername', resetUsername);
// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace Cypress {
interface Chainable {
login: typeof login;
setPrivacyTogglesToPublic: typeof setPrivacyTogglesToPublic;
goToSettings: typeof goToSettings;
typeUsername(username: string): Chainable<JQuery<HTMLElement>>;
resetUsername: typeof resetUsername;
}
}