🏡 index : container_build.git

import { $, expect } from '@wdio/globals'

export class CalcPage {
  constructor() {
    this.title = 'Calculator';
  }

  open() {
    return browser.url('http://localhost:8000')
    //return browser.url('https://main-grid.apps.cluster-mgcjz.dynamic.redhatworkshops.io')
  }

  get doc() { return browser }

  get display() { return $('#display') }

  get button_1() { return $('#digit_1') }
  get button_2() { return $('#digit_2') }
  get button_3() { return $('#digit_3') }
  get button_4() { return $('#digit_4') }
  get button_5() { return $('#digit_5') }
  get button_6() { return $('#digit_6') }
  get button_7() { return $('#digit_7') }
  get button_8() { return $('#digit_8') }
  get button_9() { return $('#digit_9') }
  get button_0() { return $('#digit_0') }

  get operation_add() { return $('#operator_add') }
  get operation_multiply() { return $('#operator_multiply') }
  get operation_subtract() { return $('#operator_subtract') }
  get operation_divide() { return $('#operator_divide') }

  get calculate() { return $('#calculate') }
  get clear() { return $('#clear') }
}

const calcPage = new CalcPage();

describe('Calculator Testing', () => {
  it('Should have a display, which shows zero', async () => {
    await calcPage.open();
    await expect(calcPage.display).toBePresent();
    calcPage.display.value
    await expect(calcPage.display).toHaveValue('0');
  });

  it('Should be able to add 1 + 2', async () => {
    await calcPage.open();
    await calcPage.button_1.click();
    await calcPage.operation_add.click();
    await calcPage.button_2.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('3');
  });

  it('Should be able to multiply 5 * 15', async () => {
    await calcPage.open();
    await calcPage.button_5.click();
    await calcPage.operation_multiply.click();
    await calcPage.button_1.click();
    await calcPage.button_5.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('75');
  });

  it('Should be able to divide 300 by 25', async () => {
    await calcPage.open();
    await calcPage.button_3.click();
    await calcPage.button_0.click();
    await calcPage.button_0.click();
    await calcPage.operation_divide.click();
    await calcPage.button_2.click();
    await calcPage.button_5.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('12');
  });

  it('Should support keyboard input', async () => {
    await calcPage.open();
    await calcPage.doc.keys('5');
    await calcPage.doc.keys('0');
    await calcPage.doc.keys('*');
    await calcPage.doc.keys('1');
    await calcPage.doc.keys('0');
    await calcPage.doc.keys('Enter');

    await expect(calcPage.display).toHaveValue('500');
  });

  it('Should be able to subtract 10 - 5', async () => {
    await calcPage.open();
    await calcPage.button_1.click();
    await calcPage.button_0.click();
    await calcPage.operation_subtract.click();
    await calcPage.button_5.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('5');
  });

  it(`Should detect each digit being pressed`, async () => {
    for (var x = 0; x < 9; x++) {
      await calcPage.open();
      await calcPage[`button_${x}`].click();
      await expect(calcPage.display).toHaveValue(`${x}`);
    }
  });

  it ('Should support three operations in a row', async () => {
    await calcPage.open();
    await calcPage.button_1.click();
    await calcPage.operation_add.click();
    await calcPage.button_2.click();
    await calcPage.operation_multiply.click();
    await calcPage.button_3.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('9');
  });

  it('The clear button should work', async () => {
    await calcPage.open();
    await calcPage.button_1.click();
    await calcPage.operation_add.click();
    await calcPage.button_2.click();
    await calcPage.calculate.click();
    await expect(calcPage.display).toHaveValue('3');
    await calcPage.clear.click();
    await expect(calcPage.display).toHaveValue('0');
  });
});