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'); }); });