Adapt to newer webdriver api

This commit is contained in:
Thomas Nordquist
2019-05-28 11:00:06 +02:00
parent 3c58164539
commit fe16eabb6b
17 changed files with 30 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
import { clickOn, sleep, writeText, expandTopic, moveToCenterOfElement } from '../util' import { clickOn, sleep, writeText, expandTopic, moveToCenterOfElement } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function clearOldTopics(browser: Browser<void>) { export async function clearOldTopics(browser: Browser) {
const topics = ['hello', 'test 123'] const topics = ['hello', 'test 123']
for (const topic of topics) { for (const topic of topics) {
await expandTopic(topic, browser) await expandTopic(topic, browser)

View File

@@ -1,7 +1,7 @@
import { clickOn, writeTextToInput } from '../util' import { clickOn, writeTextToInput } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function connectTo(host: string, browser: Browser<void>) { export async function connectTo(host: string, browser: Browser) {
await writeTextToInput('Host', host, browser) await writeTextToInput('Host', host, browser)
await writeTextToInput('Username', 'thomas', browser, false) await writeTextToInput('Username', 'thomas', browser, false)
await writeTextToInput('Password', 'bierbier', browser, false) await writeTextToInput('Password', 'bierbier', browser, false)

View File

@@ -1,7 +1,7 @@
import { clickOn } from '../util' import { clickOn } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function copyTopicToClipboard(browser: Browser<void>) { export async function copyTopicToClipboard(browser: Browser) {
const copyButton = await browser.$('//p[contains(text(), "Topic")]/span') const copyButton = await browser.$('//p[contains(text(), "Topic")]/span')
await clickOn(copyButton, browser, 1) await clickOn(copyButton, browser, 1)
} }

View File

@@ -1,7 +1,7 @@
import { clickOn, sleep, writeText, expandTopic } from '../util' import { clickOn, sleep, writeText, expandTopic } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function copyValueToClipboard(browser: Browser<void>) { export async function copyValueToClipboard(browser: Browser) {
const copyButton = await browser.$('//p[contains(text(), "Value")]/span') const copyButton = await browser.$('//p[contains(text(), "Value")]/span')
await clickOn(copyButton, browser, 1) await clickOn(copyButton, browser, 1)
} }

View File

@@ -1,7 +1,7 @@
import { clickOn } from '../util' import { clickOn } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function disconnect(browser: Browser<void>) { export async function disconnect(browser: Browser) {
const disconnectButton = await browser.$('//button/span[contains(text(),"Disconnect")]') const disconnectButton = await browser.$('//button/span[contains(text(),"Disconnect")]')
await clickOn(disconnectButton, browser) await clickOn(disconnectButton, browser)
} }

View File

@@ -1,7 +1,7 @@
import { clickOn, sleep, writeText, delteTextWithBackspaces, expandTopic, moveToCenterOfElement, showText } from '../util' import { clickOn, sleep, writeText, delteTextWithBackspaces, expandTopic, moveToCenterOfElement, showText } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function publishTopic(browser: Browser<void>) { export async function publishTopic(browser: Browser) {
await expandTopic('kitchen/lamp/state', browser) await expandTopic('kitchen/lamp/state', browser)
const topicInput = await browser.$('//textarea[contains(text(),"kitchen/lamp/state")][2]') const topicInput = await browser.$('//textarea[contains(text(),"kitchen/lamp/state")][2]')
await clickOn(topicInput, browser) await clickOn(topicInput, browser)

View File

@@ -1,7 +1,7 @@
import { clickOn } from '../util' import { clickOn } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function reconnect(browser: Browser<void>) { export async function reconnect(browser: Browser) {
const disconnectButton = await browser.$('//button/span[contains(text(),"Disconnect")]') const disconnectButton = await browser.$('//button/span[contains(text(),"Disconnect")]')
await clickOn(disconnectButton, browser) await clickOn(disconnectButton, browser)
const connectButton = await browser.$('//button/span[contains(text(),"Connect")]') const connectButton = await browser.$('//button/span[contains(text(),"Connect")]')

View File

@@ -1,14 +1,14 @@
import { clickOn, sleep, writeText, delteTextWithBackspaces, showText } from '../util' import { clickOn, sleep, writeText, delteTextWithBackspaces, showText } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function searchTree(text: string, browser: Browser<void>) { export async function searchTree(text: string, browser: Browser) {
const searchField = await browser.$('//input[contains(@placeholder, "Search")]') const searchField = await browser.$('//input[contains(@placeholder, "Search")]')
await clickOn(searchField, browser, 1) await clickOn(searchField, browser, 1)
await writeText(text, browser, 100) await writeText(text, browser, 100)
await sleep(1500) await sleep(1500)
} }
export async function clearSearch(browser: Browser<void>) { export async function clearSearch(browser: Browser) {
const searchField = await browser.$('//input[contains(@placeholder, "Search")]') const searchField = await browser.$('//input[contains(@placeholder, "Search")]')
await clickOn(searchField, browser, 1) await clickOn(searchField, browser, 1)
await delteTextWithBackspaces(searchField, browser, 100) await delteTextWithBackspaces(searchField, browser, 100)

View File

@@ -1,7 +1,7 @@
import { clickOn, writeTextToInput, sleep } from '../util' import { clickOn, writeTextToInput, sleep } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function showAdvancedConnectionSettings(browser: Browser<void>) { export async function showAdvancedConnectionSettings(browser: Browser) {
const advancedSettingsButton = await browser.$('//button/span[contains(text(),"Advanced")]') const advancedSettingsButton = await browser.$('//button/span[contains(text(),"Advanced")]')
const addButton = await browser.$('//button/span[contains(text(),"Add")]') const addButton = await browser.$('//button/span[contains(text(),"Add")]')
@@ -23,7 +23,7 @@ export async function showAdvancedConnectionSettings(browser: Browser<void>) {
await clickOn(connectButton, browser) await clickOn(connectButton, browser)
} }
async function deleteFirstSubscribedTopic(browser: Browser<void>) { async function deleteFirstSubscribedTopic(browser: Browser) {
const deleteButton = await browser.$('.advanced-connection-settings-topic-list button') const deleteButton = await browser.$('.advanced-connection-settings-topic-list button')
await clickOn(deleteButton, browser) await clickOn(deleteButton, browser)
} }

View File

@@ -4,7 +4,7 @@ import {
sleep sleep
} from '../util' } from '../util'
export async function showJsonFormatting(browser: Browser<void>) { export async function showJsonFormatting(browser: Browser) {
const editor = await browser.$('//*[contains(@class, "ace_editor")]') const editor = await browser.$('//*[contains(@class, "ace_editor")]')
const formatJsonButton = await browser.$('#sidebar-publish-format-json') const formatJsonButton = await browser.$('#sidebar-publish-format-json')
const payloadInput = await browser.$('//*[contains(@class, "ace_text-input")]') const payloadInput = await browser.$('//*[contains(@class, "ace_text-input")]')

View File

@@ -1,7 +1,7 @@
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
import { expandTopic, sleep } from '../util' import { expandTopic, sleep } from '../util'
export async function showJsonPreview(browser: Browser<void>) { export async function showJsonPreview(browser: Browser) {
await expandTopic('actuality/showcase', browser) await expandTopic('actuality/showcase', browser)
await browser.saveScreenshot('screen3.png') await browser.saveScreenshot('screen3.png')
await sleep(1000) await sleep(1000)

View File

@@ -1,7 +1,7 @@
import { clickOn, sleep, writeText, expandTopic, moveToCenterOfElement, showText } from '../util' import { clickOn, sleep, writeText, expandTopic, moveToCenterOfElement, showText } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function showMenu(browser: Browser<void>) { export async function showMenu(browser: Browser) {
const menuButton = await browser.$('//button[contains(@aria-label, "Menu")]') const menuButton = await browser.$('//button[contains(@aria-label, "Menu")]')
await clickOn(menuButton, browser) await clickOn(menuButton, browser)

View File

@@ -1,7 +1,7 @@
import { clickOn, sleep, writeText, expandTopic, clickOnHistory } from '../util' import { clickOn, sleep, writeText, expandTopic, clickOnHistory } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function showNumericPlot(browser: Browser<void>) { export async function showNumericPlot(browser: Browser) {
await expandTopic('livingroom/temperature', browser) await expandTopic('livingroom/temperature', browser)
await clickOnHistory(browser) await clickOnHistory(browser)

View File

@@ -2,7 +2,7 @@ import { clickOn, sleep, showText } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
// Expects a topic with at least two messages to be selected // Expects a topic with at least two messages to be selected
export async function showOffDiffCapability(browser: Browser<void>) { export async function showOffDiffCapability(browser: Browser) {
await showText('Compare messages', 2000, browser, 'top') await showText('Compare messages', 2000, browser, 'top')
await showText('Show raw message', 2000, browser, 'bottom') await showText('Show raw message', 2000, browser, 'bottom')

View File

@@ -1,7 +1,7 @@
import { sleep, showKeys, showText } from '../util' import { sleep, showKeys, showText } from '../util'
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
export async function showZoomLevel(browser: Browser<void>) { export async function showZoomLevel(browser: Browser) {
await showKeys('Zoom in', 2000, browser, 'top', ['Ctrl', '+']) await showKeys('Zoom in', 2000, browser, 'top', ['Ctrl', '+'])
await sleep(2000) await sleep(2000)
await showKeys('Zoom out', 2000, browser, 'middle', ['Ctrl', '-']) await showKeys('Zoom out', 2000, browser, 'middle', ['Ctrl', '-'])

View File

@@ -1,7 +1,7 @@
import { Browser } from 'webdriverio' import { Browser } from 'webdriverio'
import { clickOn } from './' import { clickOn } from './'
export async function expandTopic(path: string, browser: Browser<void>) { export async function expandTopic(path: string, browser: Browser) {
const originalTopics = path.split('/') const originalTopics = path.split('/')
let topics = path.split('/') let topics = path.split('/')
while (topics.length > 0 && !await topicMatches(topics, browser)) { while (topics.length > 0 && !await topicMatches(topics, browser)) {
@@ -18,7 +18,7 @@ export async function expandTopic(path: string, browser: Browser<void>) {
} }
} }
async function topicMatches(topics: string[], browser: Browser<void>) { async function topicMatches(topics: string[], browser: Browser) {
const result = await browser.$(topicSelector(topics)) const result = await browser.$(topicSelector(topics))
return result.isExisting() return result.isExisting()
} }

View File

@@ -17,7 +17,7 @@ export function sleep(ms: number, required = false) {
}) })
} }
export async function writeText(text: string, browser: Browser<void>, delay = 0) { export async function writeText(text: string, browser: Browser, delay = 0) {
if (fast) { if (fast) {
return browser.keys(text.split('')) return browser.keys(text.split(''))
} }
@@ -28,7 +28,7 @@ export async function writeText(text: string, browser: Browser<void>, delay = 0)
} }
} }
export async function delteTextWithBackspaces(element: Element<void>, browser: Browser<void>, delay = 0, count = 0) { export async function delteTextWithBackspaces(element: Element, browser: Browser, delay = 0, count = 0) {
const length = count > 0 ? count : (await element.getValue()).length const length = count > 0 ? count : (await element.getValue()).length
for (let i = 0; i < length; i += 1) { for (let i = 0; i < length; i += 1) {
await browser.keys(['Backspace']) await browser.keys(['Backspace'])
@@ -36,7 +36,7 @@ export async function delteTextWithBackspaces(element: Element<void>, browser: B
} }
} }
export async function writeTextToInput(name: string, text: string, browser: Browser<void>, wait: boolean = true) { export async function writeTextToInput(name: string, text: string, browser: Browser, wait: boolean = true) {
const input = await browser.$(`//label[contains(text(), "${name}")]/..//input`) const input = await browser.$(`//label[contains(text(), "${name}")]/..//input`)
await clickOn(input, browser, 1) await clickOn(input, browser, 1)
wait && await sleep(500) wait && await sleep(500)
@@ -45,7 +45,7 @@ export async function writeTextToInput(name: string, text: string, browser: Brow
await writeText(text, browser) await writeText(text, browser)
} }
export async function moveToCenterOfElement(element: Element<void>, browser: Browser<void>) { export async function moveToCenterOfElement(element: Element, browser: Browser) {
const { x, y } = await element.getLocation() const { x, y } = await element.getLocation()
const { width, height } = await element.getSize() const { width, height } = await element.getSize()
@@ -62,12 +62,12 @@ export async function moveToCenterOfElement(element: Element<void>, browser: Bro
await element.moveTo() await element.moveTo()
} }
export async function clickOnHistory(browser: Browser<void>) { export async function clickOnHistory(browser: Browser) {
const messageHistory = await browser.$('//span/*[contains(text(), "History")]') const messageHistory = await browser.$('//span/*[contains(text(), "History")]')
await clickOn(messageHistory, browser) await clickOn(messageHistory, browser)
} }
export async function clickOn(element: Element<void>, browser: Browser<void>, clicks = 1) { export async function clickOn(element: Element, browser: Browser, clicks = 1) {
await moveToCenterOfElement(element, browser) await moveToCenterOfElement(element, browser)
for (let i = 0; i < clicks; i += 1) { for (let i = 0; i < clicks; i += 1) {
await element.click() await element.click()
@@ -75,13 +75,13 @@ export async function clickOn(element: Element<void>, browser: Browser<void>, cl
} }
} }
export async function createFakeMousePointer(browser: Browser<void>) { export async function createFakeMousePointer(browser: Browser) {
const js = 'window.demo.enableMouse();' const js = 'window.demo.enableMouse();'
await browser.execute(js) await browser.execute(js)
} }
export async function showText(text: string, duration: number = 0, browser: Browser<void>, location: 'top' | 'bottom' | 'middle' = 'bottom', keys = []) { export async function showText(text: string, duration: number = 0, browser: Browser, location: 'top' | 'bottom' | 'middle' = 'bottom', keys = []) {
const js = `window.demo.showMessage('${text}', '${location}', ${duration});` const js = `window.demo.showMessage('${text}', '${location}', ${duration});`
await browser.execute(js) await browser.execute(js)
@@ -89,7 +89,7 @@ export async function showText(text: string, duration: number = 0, browser: Brow
type HeapDump = any type HeapDump = any
export async function getHeapDump(browser: Browser<void>): Promise<HeapDump> { export async function getHeapDump(browser: Browser): Promise<HeapDump> {
const filename = 'heapdump.json' const filename = 'heapdump.json'
const js = `window.demo.writeHeapdump('${filename}');` const js = `window.demo.writeHeapdump('${filename}');`
await browser.execute(js) await browser.execute(js)
@@ -111,13 +111,13 @@ export async function countInstancesOf(heapDump: HeapDump, className: ClassNameM
.filter((s: string) => s === className).length .filter((s: string) => s === className).length
} }
export async function showKeys(text: string, duration: number = 0, browser: Browser<void>, location: 'top' | 'bottom' | 'middle' = 'bottom', keys: string[] = []) { export async function showKeys(text: string, duration: number = 0, browser: Browser, location: 'top' | 'bottom' | 'middle' = 'bottom', keys: string[] = []) {
const js = `window.demo.showMessage('${text}', '${location}', ${duration}, ${JSON.stringify(keys)});` const js = `window.demo.showMessage('${text}', '${location}', ${duration}, ${JSON.stringify(keys)});`
await browser.execute(js) await browser.execute(js)
} }
export async function hideText(browser: Browser<void>) { export async function hideText(browser: Browser) {
const js = 'window.demo.hideMessage();' const js = 'window.demo.hideMessage();'
await browser.execute(js) await browser.execute(js)
await sleep(600) await sleep(600)