mirror of
https://github.com/appium/appium.git
synced 2026-01-25 19:59:17 -06:00
104 lines
3.2 KiB
JavaScript
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");
|
|
});
|
|
|
|
});
|