set separation of projects and settings
This commit is contained in:
parent
7cc103cf3f
commit
8f4bf81226
|
@ -0,0 +1,19 @@
|
||||||
|
# Rocket.chat Appium integration
|
||||||
|
|
||||||
|
Project to run e2ed tests with appium.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
Follow the below commands -
|
||||||
|
- Clone the project - `https://github.com/RocketChat/Rocket.Chat.ReactNative.git`.
|
||||||
|
|
||||||
|
- Go to appium folder using the same terminal - `cd appium`.
|
||||||
|
|
||||||
|
- Install dependencies using `npm i` in the terminal.
|
||||||
|
|
||||||
|
- Update the deviceName and platFormVersion in `config/android.info.js` and `config/ios.info.js` respectively.
|
||||||
|
|
||||||
|
- Update the `apps` folder with apk to run on android or set .ipa to run on ios.
|
||||||
|
|
||||||
|
- Execute `npm run ios` to run ios app.
|
||||||
|
|
||||||
|
- Execute `npm run android` to run ios app.
|
|
@ -0,0 +1,21 @@
|
||||||
|
const { config } = require('./wdio.conf');
|
||||||
|
const android = require('./android.info');
|
||||||
|
// const path = require('path');
|
||||||
|
|
||||||
|
// appium capabilities
|
||||||
|
config.capabilities = [
|
||||||
|
{
|
||||||
|
platformName: 'Android',
|
||||||
|
automationName: 'uiautomator2',
|
||||||
|
maxInstances: 1,
|
||||||
|
noReset: true,
|
||||||
|
fullReset: false,
|
||||||
|
deviceName: android.deviceName,
|
||||||
|
platformVersion: android.platformVersion,
|
||||||
|
appPackage: android.appPackage,
|
||||||
|
appActivity: android.appActivity
|
||||||
|
// app: path.resolve('apps/' + android.app)
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
exports.config = config;
|
|
@ -0,0 +1,7 @@
|
||||||
|
module.exports = {
|
||||||
|
deviceName: 'emulator', // pass the udid ode device
|
||||||
|
platformVersion: '12', // pass the platform version
|
||||||
|
appPackage: 'chat.rocket.reactnative',
|
||||||
|
appActivity: 'chat.rocket.reactnative.MainActivity'
|
||||||
|
// app: 'app.apk'
|
||||||
|
};
|
|
@ -0,0 +1,17 @@
|
||||||
|
const { config } = require('./wdio.conf');
|
||||||
|
const iosInfo = require('./ios.info');
|
||||||
|
|
||||||
|
// appium capabilities
|
||||||
|
config.capabilities = [
|
||||||
|
{
|
||||||
|
platformName: 'iOS',
|
||||||
|
automationName: 'XCUITest',
|
||||||
|
noReset: true,
|
||||||
|
fullReset: false,
|
||||||
|
deviceName: iosInfo.deviceName,
|
||||||
|
platformVersion: iosInfo.platformVersion,
|
||||||
|
app: iosInfo.app
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
exports.config = config;
|
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
deviceName: '', // pass the udid or device name
|
||||||
|
platformVersion: '', // pass the platform version
|
||||||
|
app: 'com.apple.app'
|
||||||
|
};
|
|
@ -0,0 +1,123 @@
|
||||||
|
exports.config = {
|
||||||
|
//
|
||||||
|
// ====================
|
||||||
|
// Runner Configuration
|
||||||
|
// ====================
|
||||||
|
//
|
||||||
|
// WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or
|
||||||
|
// on a remote machine).
|
||||||
|
runner: 'local',
|
||||||
|
//
|
||||||
|
// ==================
|
||||||
|
// Specify Test Files
|
||||||
|
// ==================
|
||||||
|
// Define which test specs should run. The pattern is relative to the directory
|
||||||
|
// from which `wdio` was called. Notice that, if you are calling `wdio` from an
|
||||||
|
// NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
|
||||||
|
// directory is where your package.json resides, so `wdio` will be called from there.
|
||||||
|
//
|
||||||
|
// Patterns to exclude.
|
||||||
|
exclude: [
|
||||||
|
// 'path/to/excluded/files'
|
||||||
|
],
|
||||||
|
//
|
||||||
|
// ============
|
||||||
|
// Capabilities
|
||||||
|
// ============
|
||||||
|
// Define your capabilities here. WebdriverIO can run multiple capabilities at the same
|
||||||
|
// time. Depending on the number of capabilities, WebdriverIO launches several test
|
||||||
|
// sessions. Within your capabilities you can overwrite the spec and exclude options in
|
||||||
|
// order to group specific specs to a specific capability.
|
||||||
|
//
|
||||||
|
// First, you can define how many instances should be started at the same time. Let's
|
||||||
|
// say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have
|
||||||
|
// set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec
|
||||||
|
// files and you set maxInstances to 10, all spec files will get tested at the same time
|
||||||
|
// and 30 processes will get spawned. The property handles how many capabilities
|
||||||
|
// from the same test should run tests.
|
||||||
|
//
|
||||||
|
// maxInstances: 10,
|
||||||
|
//
|
||||||
|
// If you have trouble getting all important capabilities together, check out the
|
||||||
|
// Sauce Labs platform configurator - a great tool to configure your capabilities:
|
||||||
|
// https://docs.saucelabs.com/reference/platforms-configurator
|
||||||
|
// capabilities: [{
|
||||||
|
//
|
||||||
|
// // maxInstances can get overwritten per capability. So if you have an in-house Selenium
|
||||||
|
// // grid with only 5 firefox instances available you can make sure that not more than
|
||||||
|
// // 5 instances get started at a time.
|
||||||
|
// maxInstances: 5,
|
||||||
|
// //
|
||||||
|
// browserName: 'chrome',
|
||||||
|
// // If outputDir is provided WebdriverIO can capture driver session logs
|
||||||
|
// // it is possible to configure which logTypes to include/exclude.
|
||||||
|
// // excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs
|
||||||
|
// // excludeDriverLogs: ['bugreport', 'server'],
|
||||||
|
// }],
|
||||||
|
//
|
||||||
|
// ===================
|
||||||
|
// Test Configurations
|
||||||
|
// ===================
|
||||||
|
// Define all options that are relevant for the WebdriverIO instance here
|
||||||
|
//
|
||||||
|
// Level of logging verbosity: trace | debug | info | warn | error | silent
|
||||||
|
logLevel: 'info',
|
||||||
|
//
|
||||||
|
// Set specific log levels per logger
|
||||||
|
// loggers:
|
||||||
|
// - webdriver, webdriverio
|
||||||
|
// - @wdio/applitools-service, @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service
|
||||||
|
// - @wdio/mocha-framework, @wdio/jasmine-framework
|
||||||
|
// - @wdio/local-runner, @wdio/lambda-runner
|
||||||
|
// - @wdio/sumologic-reporter
|
||||||
|
// - @wdio/cli, @wdio/config, @wdio/sync, @wdio/utils
|
||||||
|
// Level of logging verbosity: trace | debug | info | warn | error | silent
|
||||||
|
// logLevels: {
|
||||||
|
// webdriver: 'info',
|
||||||
|
// '@wdio/applitools-service': 'info'
|
||||||
|
// },
|
||||||
|
//
|
||||||
|
// If you only want to run your tests until a specific amount of tests have failed use
|
||||||
|
// bail (default is 0 - don't bail, run all tests).
|
||||||
|
bail: 0,
|
||||||
|
//
|
||||||
|
// Set a base URL in order to shorten url command calls. If your `url` parameter starts
|
||||||
|
// with `/`, the base url gets prepended, not including the path portion of your baseUrl.
|
||||||
|
// If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
|
||||||
|
// gets prepended directly.
|
||||||
|
//
|
||||||
|
// Default timeout for all waitFor* commands.
|
||||||
|
waitforTimeout: 10000,
|
||||||
|
//
|
||||||
|
// Default timeout in milliseconds for request
|
||||||
|
// if browser driver or grid doesn't send response
|
||||||
|
connectionRetryTimeout: 120000,
|
||||||
|
//
|
||||||
|
// Default request retries count
|
||||||
|
connectionRetryCount: 3,
|
||||||
|
//
|
||||||
|
// Test runner services
|
||||||
|
// Services take over a specific job you don't want to take care of. They enhance
|
||||||
|
// your test setup with almost no effort. Unlike plugins, they don't add new
|
||||||
|
// commands. Instead, they hook themselves up into the test process.
|
||||||
|
services: ['appium'],
|
||||||
|
appium: {
|
||||||
|
command: 'appium',
|
||||||
|
args: {}
|
||||||
|
},
|
||||||
|
port: 4723,
|
||||||
|
path: '/wd/hub',
|
||||||
|
|
||||||
|
// Framework you want to run your specs with.
|
||||||
|
// The following are supported: Mocha, Jasmine, and Cucumber
|
||||||
|
// see also: https://webdriver.io/docs/frameworks.html
|
||||||
|
//
|
||||||
|
// Make sure you have the wdio adapter package for the specific framework installed
|
||||||
|
// before running any tests.
|
||||||
|
framework: 'mocha',
|
||||||
|
mochaOpts: {
|
||||||
|
ui: 'bdd',
|
||||||
|
timeout: 60000
|
||||||
|
},
|
||||||
|
specs: ['./tests/specs/**/*.js']
|
||||||
|
};
|
File diff suppressed because it is too large
Load Diff
|
@ -4,21 +4,21 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"ios": "wdio ./config/ios.config.js",
|
||||||
|
"android": "wdio ./config/android.config.js"
|
||||||
},
|
},
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
|
||||||
"@wdio/cli": "^7.19.3",
|
|
||||||
"chai": "^4.3.6",
|
|
||||||
"webdriverio": "^7.19.3"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/register": "^7.17.7",
|
"@babel/register": "^7.17.7",
|
||||||
"@wdio/appium-service": "^7.19.1",
|
"@wdio/appium-service": "^7.19.1",
|
||||||
|
"@wdio/cli": "^7.19.3",
|
||||||
"@wdio/local-runner": "^7.19.3",
|
"@wdio/local-runner": "^7.19.3",
|
||||||
"@wdio/mocha-framework": "^7.19.3",
|
"@wdio/mocha-framework": "^7.19.3",
|
||||||
"@wdio/spec-reporter": "^7.19.1",
|
"@wdio/spec-reporter": "^7.19.1",
|
||||||
"wdio-wait-for": "^2.2.5"
|
"@wdio/sync": "^7.19.3",
|
||||||
|
"chai": "^4.3.6",
|
||||||
|
"wdio-json-reporter": "^3.0.0",
|
||||||
|
"webdriverio": "^7.19.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
// @ts-ignore
|
|
||||||
const { expect } = require('chai');
|
|
||||||
|
|
||||||
describe('Simple App testing', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
$('~app-root').waitForDisplayed(10000, false);
|
|
||||||
});
|
|
||||||
it('Login test: valid case', async => {
|
|
||||||
$('~username').setValue('codemagic');
|
|
||||||
$('~password').setValue('nevercode');
|
|
||||||
$('~login').click();
|
|
||||||
$('~loginstatus').waitForDisplayed(11000);
|
|
||||||
const status = $('~loginstatus').getText();
|
|
||||||
expect(status).to.equal('success');
|
|
||||||
});
|
|
||||||
it('Login test: invalid case', async => {
|
|
||||||
$('~username').setValue('nevercode');
|
|
||||||
$('~password').setValue('codemagic');
|
|
||||||
$('~login').click();
|
|
||||||
$('~loginstatus').waitForDisplayed(11000);
|
|
||||||
const status = $('~loginstatus').getText();
|
|
||||||
expect(status).to.equal('fail');
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
const { expect } = require('chai');
|
||||||
|
|
||||||
|
describe('Verify initial app screen', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
driver.launchApp();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('set workspace url', async () => {
|
||||||
|
await $('~enter-workspace-url').setValue('mobile');
|
||||||
|
const status = await $('~enter-workspace-url').getText();
|
||||||
|
expect(status).to.equal('mobile');
|
||||||
|
});
|
||||||
|
});
|
|
@ -1,9 +1,6 @@
|
||||||
exports.config = {
|
exports.config = {
|
||||||
services: ['appium'],
|
path: '/wd/hub',
|
||||||
port: 4723,
|
port: 4723,
|
||||||
runner: 'local',
|
|
||||||
specs: ['./tests/specs/**/*.js'],
|
|
||||||
path: '/wd/hub/',
|
|
||||||
capabilities: [
|
capabilities: [
|
||||||
{
|
{
|
||||||
maxInstances: 1,
|
maxInstances: 1,
|
||||||
|
@ -11,23 +8,12 @@ exports.config = {
|
||||||
appiumVersion: '1.22.3',
|
appiumVersion: '1.22.3',
|
||||||
// app: 'android-official-release.apk',
|
// app: 'android-official-release.apk',
|
||||||
platformName: 'Android',
|
platformName: 'Android',
|
||||||
platformVersion: '11',
|
platformVersion: '12',
|
||||||
deviceName: 'emulator',
|
deviceName: 'emulator',
|
||||||
automationName: 'UiAutomator2',
|
automationName: 'UiAutomator2',
|
||||||
appPackage: 'chat.rocket.reactnative',
|
appPackage: 'chat.rocket.reactnative',
|
||||||
appActivity: 'chat.rocket.reactnative.MainActivity'
|
appActivity: 'chat.rocket.reactnative.MainActivity'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
specs: ['./tests/specs/**/*.js']
|
||||||
logLevel: 'trace',
|
|
||||||
bail: 0,
|
|
||||||
waitforTimeout: 10000,
|
|
||||||
connectionRetryTimeout: 90000,
|
|
||||||
connectionRetryCount: 3,
|
|
||||||
framework: 'mocha',
|
|
||||||
reporters: ['spec'],
|
|
||||||
mochaOpts: {
|
|
||||||
ui: 'bdd',
|
|
||||||
timeout: 60000
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue