Initial commit
This commit is contained in:
commit
ccd9f0ddd0
1 changed files with 995 additions and 0 deletions
83
smoke-test.js
Normal file
83
smoke-test.js
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
const http = require('http');
|
||||
|
||||
const HOST = process.env.APPIUM_HOST || '127.0.0.1';
|
||||
const PORT = parseInt(process.env.APPIUM_PORT || '4723', 10);
|
||||
const TIMEOUT = 30000;
|
||||
|
||||
function request(method, path, body) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const opts = {
|
||||
hostname: HOST, port: PORT, path, method,
|
||||
headers: body ? { 'Content-Type': 'application/json' } : {},
|
||||
timeout: TIMEOUT,
|
||||
};
|
||||
const req = http.request(opts, (res) => {
|
||||
let data = '';
|
||||
res.on('data', (chunk) => { data += chunk; });
|
||||
res.on('end', () => {
|
||||
try {
|
||||
const json = JSON.parse(data);
|
||||
const val = json.value !== undefined ? json.value : json;
|
||||
if (val && val.error) {
|
||||
reject(new Error(val.message || val.error));
|
||||
} else {
|
||||
resolve(json);
|
||||
}
|
||||
} catch (e) {
|
||||
reject(new Error(`Response parse error: ${data.slice(0, 300)}`));
|
||||
}
|
||||
});
|
||||
});
|
||||
req.on('error', reject);
|
||||
req.on('timeout', () => { req.destroy(); reject(new Error('Request timed out')); });
|
||||
if (body) req.write(JSON.stringify(body));
|
||||
req.end();
|
||||
});
|
||||
}
|
||||
|
||||
function sleep(ms) {
|
||||
return new Promise((r) => setTimeout(r, ms));
|
||||
}
|
||||
|
||||
async function main() {
|
||||
console.log(`Connecting to Appium at ${HOST}:${PORT}...`);
|
||||
|
||||
const caps = {
|
||||
platformName: 'Android',
|
||||
'appium:automationName': 'UiAutomator2',
|
||||
'appium:deviceName': 'Android',
|
||||
'appium:noReset': true,
|
||||
};
|
||||
|
||||
console.log('Creating session...');
|
||||
const createRes = await request('POST', '/session', {
|
||||
capabilities: { firstMatch: [caps] },
|
||||
});
|
||||
const sid = (createRes.value && createRes.value.sessionId) || createRes.sessionId;
|
||||
if (!sid) throw new Error(`No sessionId in response: ${JSON.stringify(createRes)}`);
|
||||
console.log(` sessionId: ${sid}`);
|
||||
|
||||
console.log('Taking screenshot...');
|
||||
await sleep(1000);
|
||||
const ssRes = await request('GET', `/session/${sid}/screenshot`);
|
||||
const ssLen = ssRes.value ? ssRes.value.length : 0;
|
||||
console.log(` screenshot: ${ssLen} bytes`);
|
||||
|
||||
console.log('Quering current package...');
|
||||
try {
|
||||
const pkgRes = await request('GET', `/session/${sid}/appium/device/current_package`);
|
||||
console.log(` current package: ${pkgRes.value}`);
|
||||
} catch (e) {
|
||||
console.log(` (could not get package: ${e.message})`);
|
||||
}
|
||||
|
||||
console.log('Deleting session...');
|
||||
await request('DELETE', `/session/${sid}`);
|
||||
|
||||
console.log('\nSmoke test PASSED');
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(`\nSmoke test FAILED: ${err.message}`);
|
||||
process.exit(1);
|
||||
});
|
||||
Loading…
Reference in a new issue