0.0.72 • Published 3 months ago

@spartez-software/ui-test-utils v0.0.72

Weekly downloads
5
License
MIT
Repository
bitbucket
Last release
3 months ago

spartez test utils (Beta)

Various UI test helpers - jest and puppeteer based

prerequisites

  • ability to run tests using jest

installation

npm install @spartez-software/ui-test-utils --save-dev

setup

  • go get yourself a jira cloud instance
  • setup .env
TEST_JIRA_URL=https://your-cloud-jira-instance-name.atlassian.net
JIRA_ACT_AS_USER=user-be-testing-app@spartez-software.com
JIRA_ACT_AS_USER_PASSWORD=pst! it is a secret!, not a token!

usage (jest/typescript example)

import 'dotenv/config';
import { Browser, Page } from 'puppeteer';
import * as puppeteer from 'puppeteer';
import { step } from '@spartez-software/test-utils';
import {
    cleanupScreenshots, loginToJira, screenshot, setupOutputDirectory,
    forwardConsoleAndRequestsFromBrowser, waitTillHTMLRendered
} from '@spartez-software/ui-test-utils';


describe('jira - login', () => {
    jest.setTimeout(120000);

    const jiraUrl = String(process.env.TEST_JIRA_URL);
    const user = String(process.env.JIRA_ACT_AS_USER);
    const pass = String(process.env.JIRA_ACT_AS_USER_PASSWORD);
    let page : Page;
    let browser : Browser;

    beforeAll(async () => {
        cleanupScreenshots();
        setupOutputDirectory();
        browser = await puppeteer.launch({
            headless: true,
            args: ['--no-sandbox'],
        });
    });

    afterAll(async () => {
        await browser.close();
    });

    beforeEach(async () => {
        page = await browser.newPage();
    });

    afterEach(async () => {
        await screenshot(page);
        await page.close();
    });

    test('Should get valid board id for kanban nextgen', async () => {
        page = await browser.newPage();
        await page.setViewport({
            width: 1920,
            height: 1080,
        });
        await forwardConsoleAndRequestsFromBrowser(page);

        await step(`Login to jira ${jiraUrl}`, async () => {
            await loginToJira(page, jiraUrl, user, pass);
            await waitTillHTMLRendered(page);
        });

        await step('verify jira is there', async () => {
            const jira = await page.$('#jira-frontend');
            expect(jira).toBeDefined();
        })
    });
});

page objects

  • loginToJira() : obvious

helper functions that deserv a bit more explanation

  • async function waitTillHTMLRendered(page: Page, timeout = 30000): Promise\ Waits till pages html becomes stable (page.content().length). Don't use if you have some background tasks changing the page constantly or in an uncontrolled way (periodic, or push for example)
  • async forwardConsoleAndRequestsFromBrowser(page: Page) Promise\ Forwards browser console, pageerror, response and requestfailed events from the browser. Usefull when debuging, but way to verbose to keep it enabled in the CI.
0.0.72

3 months ago

0.0.71

5 months ago

0.0.70

12 months ago

0.0.68

2 years ago

0.0.69

2 years ago

0.0.67

2 years ago

0.0.66

2 years ago

0.0.64

2 years ago

0.0.65

2 years ago

0.0.62

2 years ago

0.0.63

2 years ago

0.0.61

3 years ago

0.0.60

3 years ago

0.0.59

3 years ago

0.0.57

3 years ago

0.0.58

3 years ago

0.0.56

3 years ago

0.0.55

3 years ago

0.0.53

3 years ago

0.0.54

3 years ago

0.0.52

3 years ago

0.0.51

3 years ago

0.0.50

3 years ago

0.0.49

3 years ago

0.0.48

3 years ago

0.0.47

3 years ago

0.0.46

3 years ago

0.0.45

3 years ago

0.0.44

3 years ago

0.0.43

3 years ago

0.0.41

3 years ago

0.0.42

3 years ago

0.0.40

3 years ago

0.0.39

3 years ago

0.0.37

3 years ago

0.0.38

3 years ago

0.0.36

3 years ago

0.0.35

3 years ago

0.0.33

3 years ago

0.0.34

3 years ago

0.0.32

3 years ago

0.0.30

3 years ago

0.0.31

3 years ago

0.0.29

3 years ago

0.0.28

3 years ago

0.0.27

3 years ago

0.0.26

3 years ago

0.0.25

3 years ago

0.0.24

3 years ago

0.0.23

3 years ago

0.0.22

3 years ago

0.0.21

3 years ago

0.0.20

3 years ago

0.0.19

3 years ago

0.0.18

3 years ago