Files
appium/test/driver-e2e-specs.js
Jonathan Lipps c22c00fb82 add ability for importing package to send in logHandler which can spy on logs
this is necessary for the new appium desktop
2016-07-19 15:03:05 -07:00

104 lines
3.2 KiB
JavaScript

// transpile:mocha
import _ from 'lodash';
import B from 'bluebird';
import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
import wd from 'wd';
import { main as appiumServer } from '../lib/main';
import { TEST_FAKE_APP, TEST_HOST, TEST_PORT } from './helpers';
chai.use(chaiAsPromised);
const should = chai.should();
const shouldStartServer = process.env.USE_RUNNING_SERVER !== "0";
const caps = {platformName: "Fake", deviceName: "Fake", app: TEST_FAKE_APP};
describe('FakeDriver - via HTTP', () => {
let server = null;
before(async () => {
if (shouldStartServer) {
let args = {port: TEST_PORT, host: TEST_HOST};
server = await appiumServer(args);
}
});
after(async () => {
if (server) {
await server.close();
}
});
describe('session handling', () => {
it('should start and stop a session', async () => {
let driver = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
let [sessionId] = await driver.init(caps);
should.exist(sessionId);
sessionId.should.be.a('string');
await driver.quit();
await driver.title().should.eventually.be.rejectedWith(/terminated/);
});
it('should be able to run two FakeDriver sessions simultaneously', async () => {
let driver1 = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
let [sessionId1] = await driver1.init(caps);
should.exist(sessionId1);
sessionId1.should.be.a('string');
let driver2 = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
let [sessionId2] = await driver2.init(caps);
should.exist(sessionId2);
sessionId2.should.be.a('string');
sessionId1.should.not.equal(sessionId2);
await driver1.quit();
await driver2.quit();
});
it('should not be able to run two FakeDriver sessions simultaneously when one is unique', async () => {
let uniqueCaps = _.clone(caps);
uniqueCaps.uniqueApp = true;
let driver1 = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
let [sessionId1] = await driver1.init(uniqueCaps);
should.exist(sessionId1);
sessionId1.should.be.a('string');
let driver2 = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
await driver2.init(caps).should.eventually.be.rejected;
await driver1.quit();
});
it('should use the newCommandTimeout of the inner Driver on session creation', async () => {
let driver = wd.promiseChainRemote(TEST_HOST, TEST_PORT);
caps.newCommandTimeout = 0.25;
let [sessionId] = await driver.init(caps);
should.exist(sessionId);
await B.delay(250);
await driver.source().should.eventually.be.rejectedWith(/terminated/);
});
});
});
describe('Logsink', () => {
let server = null;
let logs = [];
let logHandler = (level, message) => {
logs.push([level, message]);
};
let args = {port: TEST_PORT, host: TEST_HOST, logHandler};
before(async () => {
server = await appiumServer(args);
});
after(async () => {
await server.close();
});
it('should send logs to a logHandler passed in by a parent package', async () => {
logs.length.should.be.above(1);
logs[0].length.should.equal(2);
logs[0][1].should.include("Welcome to Appium");
});
});