appium-xcuitest-driver
Version:
Appium driver for iOS using XCUITest for backend
131 lines • 5.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const bluebird_1 = __importDefault(require("bluebird"));
const https_1 = __importDefault(require("https"));
const ports_1 = require("../helpers/ports");
const os_1 = __importDefault(require("os"));
const pem_1 = __importDefault(require("pem"));
const desired_1 = require("../desired");
const session_1 = require("../helpers/session");
const helpers_1 = require("./helpers");
const asyncbox_1 = require("asyncbox");
const chai_1 = __importDefault(require("chai"));
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
chai_1.default.use(chai_as_promised_1.default);
const pem = bluebird_1.default.promisifyAll(pem_1.default);
let caps;
let pemCertificate;
describe('Safari SSL', function () {
this.timeout(session_1.MOCHA_TIMEOUT);
/** @type {import('node:https').Server} */
let sslServer;
let driver;
/** @type {string} */
let localHttpsUrl;
before(async function () {
// Create a random pem certificate
const privateKey = await pem.createPrivateKeyAsync();
const keys = await pem.createCertificateAsync({
days: 1,
selfSigned: true,
serviceKey: privateKey.key,
altNames: ['localhost'],
});
pemCertificate = keys.certificate;
const port = await (0, ports_1.getFreePort)();
localHttpsUrl = `https://localhost:${port}/`;
// Host an SSL server that uses that certificate
const serverOpts = { key: keys.serviceKey, cert: pemCertificate };
sslServer = https_1.default
.createServer(serverOpts, (req, res) => {
res.end('Arbitrary text');
})
.listen(port);
caps = (0, desired_1.amendCapabilities)(desired_1.SAFARI_CAPS, {
'appium:safariInitialUrl': localHttpsUrl,
'appium:noReset': true,
'appium:customSSLCert': pemCertificate + os_1.default.EOL,
});
});
after(async function () {
await (0, session_1.deleteSession)();
if (sslServer) {
await sslServer.close();
}
});
it('should open pages with untrusted certs if the cert was provided in desired capabilities', async function () {
const assertPageSource = async () => {
await (0, asyncbox_1.waitForCondition)(async () => (await driver.getPageSource()).includes('Arbitrary text'), {
waitMs: 10000,
intervalMs: 500,
});
};
try {
driver = await (0, session_1.initSession)(caps);
await assertPageSource();
}
finally {
await (0, session_1.deleteSession)();
}
await bluebird_1.default.delay(100);
// Now do another session using the same cert to verify that it still works
try {
driver = await (0, session_1.initSession)(caps);
await driver.url(localHttpsUrl);
await assertPageSource();
}
finally {
await (0, session_1.deleteSession)();
}
});
describe('cookies', function () {
const secureCookie = {
...helpers_1.newCookie,
secure: true,
name: 'securecookie',
value: 'this is a secure cookie',
};
before(async function () {
driver = await (0, session_1.initSession)(caps);
});
beforeEach(async function () {
await driver.url(localHttpsUrl);
await driver.setCookies([helpers_1.oldCookie1]);
await driver.deleteCookie(secureCookie.name);
});
it('should be able to set a secure cookie', async function () {
let cookies = await driver.getCookies();
(0, helpers_1.doesNotIncludeCookie)(cookies, secureCookie);
await driver.setCookies([secureCookie]);
cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, secureCookie);
});
it('should not delete an old cookie after setting a secure cookie', async function () {
let cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1);
await driver.setCookies([secureCookie]);
cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1);
});
it('should be able to delete a secure cookie', async function () {
await driver.setCookies([secureCookie]);
let cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, secureCookie);
await driver.deleteCookie(secureCookie.name);
cookies = await driver.getCookies();
(0, helpers_1.doesNotIncludeCookie)(cookies, secureCookie);
});
it('should not delete a cookie after deleting a secure cookie', async function () {
await driver.setCookies([secureCookie]);
let cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1);
await driver.deleteCookie(secureCookie.name);
cookies = await driver.getCookies();
(0, helpers_1.doesIncludeCookie)(cookies, helpers_1.oldCookie1);
});
});
});
//# sourceMappingURL=safari-ssl-e2e-specs.js.map