add a Jenkinsfile for nightly end-to-end tests
also add error handling for TestRail Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
2fd3fb96c7
commit
37dc51a93d
|
@ -0,0 +1,64 @@
|
||||||
|
pipeline {
|
||||||
|
|
||||||
|
agent { label 'linux1' }
|
||||||
|
|
||||||
|
parameters {
|
||||||
|
string(
|
||||||
|
name: 'NETWORK',
|
||||||
|
description: 'Name of test network to use.',
|
||||||
|
defaultValue: 'ropsten',
|
||||||
|
)
|
||||||
|
string(
|
||||||
|
name: 'APK_NAME',
|
||||||
|
description: 'Filename of APK uploaded to SauceLabs.',
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
options {
|
||||||
|
disableConcurrentBuilds()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Test') {
|
||||||
|
steps {
|
||||||
|
withCredentials([
|
||||||
|
usernamePassword(
|
||||||
|
credentialsId: 'test-rail-api',
|
||||||
|
usernameVariable: 'TESTRAIL_USER',
|
||||||
|
passwordVariable: 'TESTRAIL_PASS'
|
||||||
|
),
|
||||||
|
usernamePassword(
|
||||||
|
credentialsId: 'sauce-labs-api',
|
||||||
|
usernameVariable: 'SAUCE_USERNAME',
|
||||||
|
passwordVariable: 'SAUCE_ACCESS_KEY'
|
||||||
|
),
|
||||||
|
]) {
|
||||||
|
dir('test/appium/tests') {
|
||||||
|
sh """
|
||||||
|
python3 -m pytest -m testrail_id \
|
||||||
|
-n24 --rerun_count=2 \
|
||||||
|
--testrail_report=True \
|
||||||
|
--network=${params.NETWORK} \
|
||||||
|
--apk=${params.APK_NAME}
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
post {
|
||||||
|
always {
|
||||||
|
script {
|
||||||
|
sauce('12e007ad-48cf-4c20-92f3-b923bb5641bd') {
|
||||||
|
saucePublisher()
|
||||||
|
}
|
||||||
|
junit(
|
||||||
|
testDataPublishers: [[$class: 'SauceOnDemandReportPublisher', jobVisibility: 'public']],
|
||||||
|
testResults: 'test/appium/tests/*.xml'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -86,7 +86,6 @@ def uploadToSauceLabs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
def uploadToDiawi() {
|
def uploadToDiawi() {
|
||||||
env.SAUCE_LABS_NAME = "im.status.ethereum-e2e-${GIT_COMMIT.take(6)}.apk"
|
|
||||||
withCredentials([
|
withCredentials([
|
||||||
string(credentialsId: 'diawi-token', variable: 'DIAWI_TOKEN'),
|
string(credentialsId: 'diawi-token', variable: 'DIAWI_TOKEN'),
|
||||||
]) {
|
]) {
|
||||||
|
|
|
@ -31,7 +31,10 @@ class TestrailReport(BaseTestReport):
|
||||||
self.api_url = self.url + 'api/v2/'
|
self.api_url = self.url + 'api/v2/'
|
||||||
|
|
||||||
def get(self, method):
|
def get(self, method):
|
||||||
return requests.get(self.api_url + method, headers=self.headers).json()
|
rval = requests.get(self.api_url + method, headers=self.headers).json()
|
||||||
|
if 'error' in rval:
|
||||||
|
raise Exception('Failed request: %s' % rval['error'])
|
||||||
|
return rval
|
||||||
|
|
||||||
def post(self, method, data):
|
def post(self, method, data):
|
||||||
data = bytes(json.dumps(data), 'utf-8')
|
data = bytes(json.dumps(data), 'utf-8')
|
||||||
|
|
Loading…
Reference in New Issue