Jack Maclennan Portfolio
    Preparing search index...

    Fixture for HamburgerMenu component.

    export const hamburgerMenuTest = test.extend<{ hamburgerMenu: HamburgerMenu }>({
    hamburgerMenu: async ({ page }, use) => {
    const hamburgerMenu = new HamburgerMenu(page);
    // eslint-disable-next-line react-hooks/rules-of-hooks
    await use(hamburgerMenu);
    await hamburgerMenu.cleanup();
    }
    });

    Provides method helpers for locating child elements and interactivity.

    Used in example to be accessed in testing environment.

    export default class HamburgerMenu implements Component {
    /** @public Component wrapper. */
    private readonly hamburgerMenu: Locator;
    /** @public Modal wrapper. */
    private readonly hamburgerModal: HamburgerModal;
    /** @public Icon used to open {@link hamburgerModal} on interact */
    private readonly icon: Locator;

    /**
    * Fixture constructor - initialise variables.
    * @param page - Playwright page object.
    */
    public constructor(private readonly page: Page) {
    this.hamburgerMenu = this.page.getByTestId('hamburger-menu');
    this.icon = this.hamburgerMenu.getByTestId('hamburger-icon');
    this.hamburgerModal = new HamburgerModal(page);
    }

    /** Getter method. @returns {@link hamburgerMenu}. */
    public getWrapper(): Locator {
    return this.hamburgerMenu;
    }

    /** Testing helper method. */
    public async rendersCorrectly(): Promise<boolean> {
    await expect(this.getIcon(), 'hamburger icon visible when closed').toBeVisible();
    expect(await this.getModal().rendersCorrectly()).toBeTruthy();
    return true;
    }

    /** Getter method. @returns {@link icon}. */
    getIcon(): Locator {
    return this.icon;
    }

    /** Getter method. @returns {@link hamburgerModal}. */
    getModal(): HamburgerModal {
    return this.hamburgerModal;
    }

    /** Opens {@link hamburgerModal} by interacting with {@link icon}. */
    async openModal(): Promise<HamburgerModal> {
    await expect(this.getModal().getWrapper(), 'modal should be hidden').toBeHidden();
    await this.getIcon().click();
    await expect(this.getModal().getWrapper(), 'modal should be visible').toBeVisible();
    return this.getModal();
    }

    /** Cleans up tests by closing {@link hamburgerModal} if left open. */
    public async cleanup() {
    await this.hamburgerModal.cleanup();
    }
    }

    Implements

    Index

    Constructors

    Properties

    hamburgerMenu: Locator

    Component wrapper.

    hamburgerModal: HamburgerModal

    Modal wrapper.

    icon: Locator

    Icon used to open hamburgerModal on interact

    page: Page

    Playwright page object.

    Methods