Commit status change depending on e2e tests results
Signed-off-by: Anton Danchenko <ant.danchenko@gmail.com>
This commit is contained in:
parent
5f910a0bec
commit
62c7d645b7
|
@ -0,0 +1,11 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
def get_jenkins_build_url(pr_number: str) -> str:
|
||||||
|
jenkins_api_url = 'https://ci.status.im/job/end-to-end-tests/job/status-app-end-to-end-tests/'
|
||||||
|
builds_list = requests.get(jenkins_api_url + 'api/json?tree=builds[id,url]').json()[
|
||||||
|
'builds']
|
||||||
|
for build in builds_list:
|
||||||
|
data = requests.get('%s/%s/api/json' % (jenkins_api_url, build['id'])).json()
|
||||||
|
if data['displayName'] == 'PR-' + pr_number:
|
||||||
|
return build['url'] + '/console'
|
|
@ -102,6 +102,16 @@ class TestrailReport(BaseTestReport):
|
||||||
else devices + test_steps}
|
else devices + test_steps}
|
||||||
self.post(method, data=data)
|
self.post(method, data=data)
|
||||||
|
|
||||||
|
def get_run_results(self):
|
||||||
|
return self.get('get_results_for_run/%s' % self.run_id)
|
||||||
|
|
||||||
|
def is_run_successful(self):
|
||||||
|
for test in self.get_run_results():
|
||||||
|
if test['status_id'] != 1:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
def get_test_result_link(self, test_run_id, test_case_id):
|
def get_test_result_link(self, test_run_id, test_case_id):
|
||||||
try:
|
try:
|
||||||
test_id = self.get('get_results_for_case/%s/%s' % (test_run_id, test_case_id))[0]['test_id']
|
test_id = self.get('get_results_for_case/%s/%s' % (test_run_id, test_case_id))[0]['test_id']
|
||||||
|
|
|
@ -10,6 +10,7 @@ from datetime import datetime
|
||||||
from os import environ
|
from os import environ
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from sauceclient import SauceClient
|
from sauceclient import SauceClient
|
||||||
|
from support.api.jenkins_api import get_jenkins_build_url
|
||||||
from support.api.network_api import NetworkApi
|
from support.api.network_api import NetworkApi
|
||||||
from support.github_report import GithubHtmlReport
|
from support.github_report import GithubHtmlReport
|
||||||
from support.testrail_report import TestrailReport
|
from support.testrail_report import TestrailReport
|
||||||
|
@ -143,14 +144,21 @@ def pytest_configure(config):
|
||||||
test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/')
|
test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/')
|
||||||
if '.apk' in i]])[0]
|
if '.apk' in i]])[0]
|
||||||
if is_master(config):
|
if is_master(config):
|
||||||
if config.getoption('testrail_report'):
|
|
||||||
pr_number = config.getoption('pr_number')
|
pr_number = config.getoption('pr_number')
|
||||||
|
if config.getoption('testrail_report'):
|
||||||
if pr_number:
|
if pr_number:
|
||||||
run_number = len(testrail_report.get_runs(pr_number)) + 1
|
run_number = len(testrail_report.get_runs(pr_number)) + 1
|
||||||
run_name = 'PR-%s run #%s' % (pr_number, run_number)
|
run_name = 'PR-%s run #%s' % (pr_number, run_number)
|
||||||
else:
|
else:
|
||||||
run_name = test_suite_data.apk_name
|
run_name = test_suite_data.apk_name
|
||||||
testrail_report.add_run(run_name)
|
testrail_report.add_run(run_name)
|
||||||
|
if pr_number:
|
||||||
|
from github import Github
|
||||||
|
repo = Github(github_token).get_user('status-im').get_repo('status-react')
|
||||||
|
pull = repo.get_pull(int(pr_number))
|
||||||
|
pull.get_commits()[0].create_status(state='pending', context='Mobile e2e tests',
|
||||||
|
description='e2e tests are running',
|
||||||
|
target_url=get_jenkins_build_url(pr_number))
|
||||||
if config.getoption('env') == 'sauce':
|
if config.getoption('env') == 'sauce':
|
||||||
if not is_uploaded():
|
if not is_uploaded():
|
||||||
if 'http' in config.getoption('apk'):
|
if 'http' in config.getoption('apk'):
|
||||||
|
@ -175,7 +183,15 @@ def pytest_unconfigure(config):
|
||||||
from github import Github
|
from github import Github
|
||||||
repo = Github(github_token).get_user('status-im').get_repo('status-react')
|
repo = Github(github_token).get_user('status-im').get_repo('status-react')
|
||||||
pull = repo.get_pull(int(config.getoption('pr_number')))
|
pull = repo.get_pull(int(config.getoption('pr_number')))
|
||||||
pull.create_issue_comment(github_report.build_html_report(testrail_report.run_id))
|
comment = pull.create_issue_comment(github_report.build_html_report(testrail_report.run_id))
|
||||||
|
if not testrail_report.is_run_successful():
|
||||||
|
pull.get_commits()[0].create_status(state='failure', context='Mobile e2e tests',
|
||||||
|
description='Failure - e2e tests are failed',
|
||||||
|
target_url=comment.html_url)
|
||||||
|
else:
|
||||||
|
pull.get_commits()[0].create_status(state='success', context='Mobile e2e tests',
|
||||||
|
description='Success - e2e tests are passed',
|
||||||
|
target_url=comment.html_url)
|
||||||
|
|
||||||
|
|
||||||
def should_save_device_stats(config):
|
def should_save_device_stats(config):
|
||||||
|
|
Loading…
Reference in New Issue