Skip to content

Instantly share code, notes, and snippets.

@mario8x
Last active June 6, 2016 12:06
Show Gist options
  • Save mario8x/88e6fd73c7924f2ef31002c992a3db13 to your computer and use it in GitHub Desktop.
Save mario8x/88e6fd73c7924f2ef31002c992a3db13 to your computer and use it in GitHub Desktop.
Can't load module babel-polypill
import Page from './page'
import DevicesPage from './devices'
const defaultElements = {
usernameTxt: '#app form input[name="emailOrUsername"]',
passwordTxt: '#app form input[name="password"]',
loginBtn: '#app form button',
profileBtn: '//*[@id="app"]/div/div[1]/div/div[2]/div[1]/div[2]/div/div[2]/button'
}
export default class LoginPage extends Page {
constructor(elements = {}) {
const totalElements = {...defaultElements, ...elements}
super(totalElements)
}
/**
* This function return true/fasle to let user know the current
* page logged in or not
*/
async checkLoginStatus() {
try {
await this.client.waitForExist(this.elements.spinner)
await this.client.waitForExist(this.elements.profileBtn)
return true
}
catch (err) {
return false
}
}
async login(username, password) {
const check = await this.checkLoginStatus()
console.log('checkLoginStatus:' + check)
if (check === false) {
await this.client
.waitForExist(this.elements.usernameTxt)
.clearElement(this.elements.usernameTxt)
.setValue(this.elements.usernameTxt, username)
.setValue(this.elements.passwordTxt, password)
.click(this.elements.loginBtn)
.click(this.elements.loginBtn)
}
return new DevicesPage()
}
}
import {desktopApp} from '../../helpers/setup'
import {killKobitonApp} from '../../helpers/exec'
const defaultElements = {
spinner: 'div.spinner-wrapper'
}
export default class Page {
constructor(elements = {}) {
this._elements = {...defaultElements, ...elements}
}
get elements() {
return this._elements
}
get client() {
return desktopApp.client
}
async startApplication() {
await desktopApp.start()
await this.client.waitUntilWindowLoaded()
}
async stopApplication() {
if (!desktopApp || !desktopApp.isRunning()) return
await desktopApp.stop()
}
}
export const desktopApp = initDesktop()
function getDesktopPath() {
return (process.platform === 'win32')
? 'C:/Program Files/Kobiton/Kobiton.exe' : '/Applications/Kobiton\ 2.app/Contents/MacOS/Kobiton'
}
function initDesktop(options = {}) {
options.path = getDesktopPath()
options.startTimeout = 3000
options.waitTimeout = 120000
return new Application(options)
}
import LoginPage from './page-objects/login'
import {getAccount} from '../helpers/user-info'
describe('Verify desktop application', () => {
let loginPage
let devicesPage
before(async () => {
loginPage = new LoginPage()
await loginPage.startApplication()
})
after(async () => {
await loginPage.stopApplication()
})
it('should login successfully', async () => {
const account = getAccount()
await loginPage.login(account.emailOrUsername, account.password)
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment