diff --git a/config/case_template.txt b/config/case_template.txt index 9f3bf28..f3bf4af 100644 --- a/config/case_template.txt +++ b/config/case_template.txt @@ -1,45 +1,41 @@ import pytest from case_utils.assert_handle import assert_response, assert_sql -from common_utils.base_request import BaseRequest from loguru import logger -from case_utils.request_data_handle import RequestPreDataHandle, after_extract, case_data_replace,eval_data_process +from case_utils.request_data_handle import RequestPreDataHandle, RequestHandle from pytest_html import extras # 往pytest-html报告中填写额外的内容 from common_utils.func_handle import add_docstring +from case_utils.allure_handle import allure_title +import allure +# 用例数据 +cases = ${case_data} -@pytest.fixture(params=${case_data}) -def case(request): - """ - 收集用例数据 - """ - return request.param - +@allure.story(f'{cases["case_common"]["allure_story"]}') @pytest.mark.${func_title} @pytest.mark.auto +@pytest.mark.parametrize("case", cases.get("case_info")) def ${func_title}_auto(case, extra, request): logger.info("-----------------------------START-开始执行用例-----------------------------") logger.debug(f"当前执行的用例数据:{case}") try: - # 获取命令行参数,判断当前处于哪个环境 + # 获取命令行参数,判断当前处于哪个环境 env = request.config.getoption("--env") # 给当前测试方法添加文档注释 add_docstring(case.get("title", ""))(${func_title}_auto) + # 添加用例标题作为allure中显示的用例标题 + allure_title(case.get("title", "")) if case.get("run", None): - # 处理请求前的用例数据 + # 处理请求前的用例数据 case_data = RequestPreDataHandle(case).request_data_handle() # 将用例数据显示在pytest-html报告中 extra.append(extras.text(str(case_data), name="用例数据")) # 发送请求 - response = BaseRequest.send_request(case_data) + response = RequestHandle(case_data).send_request_extract() # 将响应数据显示在pytest-html报告中 extra.append(extras.text(str(response.text), name="响应数据")) - # 请求后,提取后置参数作为全局变量 - after_extract(response, case_data["extract"]) - # 从全局变量中获取最新值,替换数据库断言中的参数 - case_data["assert_sql"] = eval_data_process(case_data_replace(case_data["assert_sql"])) # 进行响应断言 assert_response(response, case_data["assert_response"]) - # 进行数据库断言 + # 进行数据库断言 assert_sql(env, case_data["assert_sql"]) else: reason = f"标记了该用例为false,不执行\\n" diff --git a/config/global_vars.py b/config/global_vars.py index 05cbbc1..e60c1ee 100644 --- a/config/global_vars.py +++ b/config/global_vars.py @@ -6,7 +6,7 @@ # @Software: PyCharm # @Desc: 全局变量 -from enum import Enum +from enum import Enum, unique # python 3.x版本才能使用 # 定义一个全局变量,作用于接口关联数据存储 GLOBAL_VARS = {} @@ -29,3 +29,32 @@ class NotificationType(Enum): EMAIL = 3 ALL = 4 + +@unique # 枚举类装饰器,确保只有一个名称绑定到任何一个值。 +class AllureAttachmentType(Enum): + """ + allure 报告的文件类型枚举 + """ + TEXT = "txt" + CSV = "csv" + TSV = "tsv" + URI_LIST = "uri" + + HTML = "html" + XML = "xml" + JSON = "json" + YAML = "yaml" + PCAP = "pcap" + + PNG = "png" + JPG = "jpg" + SVG = "svg" + GIF = "gif" + BMP = "bmp" + TIFF = "tiff" + + MP4 = "mp4" + OGG = "ogg" + WEBM = "webm" + + PDF = "pdf" diff --git a/config/logo.svg b/config/logo.svg new file mode 100644 index 0000000..b864454 --- /dev/null +++ b/config/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/config/project_path.py b/config/project_path.py index 6419e0f..5417817 100644 --- a/config/project_path.py +++ b/config/project_path.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- -# @Version: Python 3.9 -# @Time : 2023/1/31 17:27 +# @Time : 2023/5/16 11:12 # @Author : chenyinhua # @File : project_path.py # @Software: PyCharm -# @Desc: 项目相关路径 +# @Desc: + import os # ------------------------------------ 项目路径 ----------------------------------------------------# @@ -43,6 +43,17 @@ MANUAL_CASE_DIR = os.path.join(CASE_DIR, "test_manual_case") if not os.path.exists(MANUAL_CASE_DIR): os.mkdir(MANUAL_CASE_DIR) +# 测试用例方法模板路径 +CASE_TEMPLATE_DIR = os.path.join(CONF_DIR, "case_template.txt") + # 自动生成测试用例模块 AUTO_CASE_DIR = os.path.join(CASE_DIR, "test_auto_case") +# 第三方库目录 +LIB_DIR = os.path.join(BASE_DIR, "lib") + +# Allure报告,测试结果集目录 +ALLURE_RESULTS_DIR = os.path.join(REPORT_DIR, "allure_results") +# Allure报告,HTML测试报告目录 +ALLURE_HTML_DIR = os.path.join(REPORT_DIR, "allure_html") + diff --git a/config/settings.py b/config/settings.py index e0a6e12..09afb85 100644 --- a/config/settings.py +++ b/config/settings.py @@ -11,14 +11,17 @@ CASE_FILE_TYPE = 0 # 0表示默认不发送任何通知, 1代表钉钉通知,2代表企业微信通知, 3代表邮件通知, 4代表所有途径都发送通知 -SEND_RESULT_TYPE = 3 +SEND_RESULT_TYPE = 4 # 测试报告的定制化信息展示 -REPORT_TITLE = "自动化测试报告" -REPORT_NAME = f"apiautotest-report-" -PROJECT_NAME = "GitLink 确实开源" -TESTER = "测试人员:陈银花" -DEPARTMENT = "所属部门: 开源中心" +# 这个需要写入到allure测试结果集的environment.properties(不支持中文) +ENV_INFO = { + "report_title": "Auto Test Report", + "report_name": "autotestreport_", + "project_name": "GitLink", + "tester": "floraachy", + "department": "OpenSource" +} # 指定日志收集级别 LOG_LEVEL = "INFO" @@ -58,18 +61,83 @@ email = { "host": "smtp.qq.com", "to": ["******", "******"] # 收件人邮箱 } +# ------------------------------------ 邮件通知内容 ----------------------------------------------------# +email_subject = f"{ENV_INFO.get('project_name', None)} 接口自动化报告" +email_content = """ + 各位同事, 大家好: + 自动化用例于 ${start_time} 开始运行,运行时长:${run_time} s, 目前已执行完成。 + --------------------------------------------------------------------------------------------------------------- + 测试人: ${tester} + 所属部门: ${department} + 项目环境: ${project_env} + --------------------------------------------------------------------------------------------------------------- + 执行结果如下: +   用例运行总数: ${total} 个 +   通过用例个数(passed): ${passed} 个 +   失败用例个数(failed): ${failed} 个 +   异常用例个数(error): ${broken} 个 +   跳过用例个数(skipped): ${skipped} 个 +   失败重试用例个数 * 次数之和(rerun): ${rerun} 个 +   成 功 率: ${pass_rate} % + + ********************************** + 附件为具体的测试报告,详细情况可下载附件查看, 非相关负责人员可忽略此消息。谢谢。 + """ # ------------------------------------ 钉钉相关配置 ----------------------------------------------------# ding_talk = { "webhook_url": "https://oapi.dingtalk.com/robot/send?access_token=***********", "secret": "***********" } +# ------------------------------------ 钉钉通知内容 ----------------------------------------------------# +ding_talk_title = f"{ENV_INFO.get('project_name', None)} 接口自动化报告" +ding_talk_content = """ + 各位同事, 大家好: + ### 自动化用例于 ${start_time} 开始运行,运行时长:${run_time} s, 目前已执行完成。 + --------------------------------------------------------------------------------------------------------------- + #### 测试人: ${tester} + #### 所属部门: ${department} + #### 项目环境:${project_env} + --------------------------------------------------------------------------------------------------------------- + #### 执行结果如下: + - 用例运行总数: ${total} 个 + - 通过用例个数(passed): ${passed} 个 + - 失败用例个数(failed): ${failed} 个 + - 异常用例个数(error): ${broken} 个 + - 跳过用例个数(skipped): ${skipped} 个 + - 失败重试用例个数 * 次数之和(rerun): ${rerun} 个 + - 成 功 率: ${pass_rate} % + + ********************************** + 附件为具体的测试报告,详细情况可下载附件查看, 非相关负责人员可忽略此消息。谢谢。 + """ # ------------------------------------ 企业微信相关配置 ----------------------------------------------------# wechat = { "webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=********", } +# ------------------------------------ 企业微信通知内容 ----------------------------------------------------# +wechat_content = """ + 各位同事, 大家好: + ### 自动化用例于 ${start_time} 开始运行,运行时长:${run_time} s, 目前已执行完成。 + -------------------------------- + #### 测试人: ${tester} + #### 所属部门: ${department} + #### 项目环境:${project_env} + -------------------------------- + #### 执行结果如下: + - 用例运行总数: ${total} 个 + - 通过用例个数(passed): ${passed} 个 + - 失败用例个数(failed): ${failed} 个 + - 异常用例个数(error): ${broken} 个 + - 跳过用例个数(skipped): ${skipped} 个 + - 失败重试用例个数 * 次数之和(rerun): ${rerun} 个 + - 成 功 率: ${pass_rate} % + + ********************************** + 附件为具体的测试报告,详细情况可下载附件查看, 非相关负责人员可忽略此消息。谢谢。 + """ # ------------------------------------ 数据库相关配置 ----------------------------------------------------# db_info = { "test": { @@ -87,7 +155,6 @@ db_info = { }, "live": { - } -} \ No newline at end of file +} diff --git a/conftest.py b/conftest.py index eff8e6c..1e02eb7 100644 --- a/conftest.py +++ b/conftest.py @@ -5,15 +5,14 @@ # @File : conftest.py # @Software: PyCharm # @Desc: 这是文件的描述信息 - +import os.path from config.global_vars import GLOBAL_VARS from loguru import logger import pytest from py._xmlgen import html # 安装pytest-html,版本最好是2.1.1 from time import strftime -from config.settings import test, live, REPORT_TITLE, PROJECT_NAME, TESTER, DEPARTMENT -from case_utils.send_result_handle import get_test_info_from_html_report, send_result +from config.settings import test, live, ENV_INFO # ------------------------------------- START: 配置运行环境 ---------------------------------------# @@ -51,7 +50,7 @@ def get_config(request): for k, v in item.items(): GLOBAL_VARS[k] = v - logger.info(f"当前环境变量为:{GLOBAL_VARS}") + logger.debug(f"当前环境变量为:{GLOBAL_VARS}") # ------------------------------------- END: 配置运行环境 ---------------------------------------# @@ -80,7 +79,7 @@ def pytest_html_report_title(report): """ 修改报告标题 """ - report.title = REPORT_TITLE + report.title = ENV_INFO.get('report_title', "") def pytest_configure(config): @@ -88,7 +87,7 @@ def pytest_configure(config): # 在测试运行前,修改Environment部分信息,配置测试报告环境信息 """ # 给环境表 添加项目名称及开始时间 - config._metadata["项目名称"] = PROJECT_NAME + config._metadata["项目名称"] = ENV_INFO.get('project_name', "") config._metadata['开始时间'] = strftime('%Y-%m-%d %H:%M:%S') # 给环境表 移除packages 及plugins config._metadata.pop("Packages") @@ -101,25 +100,16 @@ def pytest_sessionfinish(session, exitstatus): 在测试运行后,修改Environment部分信息 """ # 给环境表 添加 项目环境 - env = session.config.getoption("--env") # 可以获取到命令行参数指定的环境 + env = session.config.getoption("--env") # 可以获取到命令行参数指定的环境 session.config._metadata['项目环境'] = {GLOBAL_VARS.get("host", env)} -@pytest.hookimpl(hookwrapper=True) -def pytest_terminal_summary(terminalreporter, exitstatus, config): - yield - # 获取测试报告路径,并发送测试结果 - report_path = config.getoption('--html') - results = get_test_info_from_html_report(report_path) - send_result(results, report_path) - - def pytest_html_results_summary(prefix, summary, postfix): """ 修改Summary部分的信息 """ - prefix.extend([html.p(TESTER)]) - prefix.extend([html.p(DEPARTMENT)]) + prefix.extend([html.p(f'测试人员:{ENV_INFO.get("tester", "")}')]) + prefix.extend([html.p(f'所属部门: :{ENV_INFO.get("department", "")}')]) def pytest_html_results_table_header(cells): diff --git a/lib/allure-2.22.0/bin/allure b/lib/allure-2.22.0/bin/allure new file mode 100644 index 0000000..e49e8d5 --- /dev/null +++ b/lib/allure-2.22.0/bin/allure @@ -0,0 +1,239 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# allure start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh allure +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and ALLURE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +export APP_HOME=$( cd "${APP_HOME:-./}.." && pwd -P ) || exit + +APP_NAME="allure" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and ALLURE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/lib/*:$APP_HOME/lib/config + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and ALLURE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $ALLURE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + -classpath "$CLASSPATH" \ + io.qameta.allure.CommandLine \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $ALLURE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/lib/allure-2.22.0/bin/allure.bat b/lib/allure-2.22.0/bin/allure.bat new file mode 100644 index 0000000..abab63a --- /dev/null +++ b/lib/allure-2.22.0/bin/allure.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem allure startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME%.. + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and ALLURE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\lib\*;%APP_HOME%\lib\config + + +@rem Execute allure +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %ALLURE_OPTS% -classpath "%CLASSPATH%" io.qameta.allure.CommandLine %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable ALLURE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%ALLURE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/lib/allure-2.22.0/config/allure-cucumber.yml b/lib/allure-2.22.0/config/allure-cucumber.yml new file mode 100644 index 0000000..e69de29 diff --git a/lib/allure-2.22.0/config/allure-junit.yml b/lib/allure-2.22.0/config/allure-junit.yml new file mode 100644 index 0000000..c40f11b --- /dev/null +++ b/lib/allure-2.22.0/config/allure-junit.yml @@ -0,0 +1,3 @@ +plugins: + - junit-plugin + - packages-plugin diff --git a/lib/allure-2.22.0/config/allure.yml b/lib/allure-2.22.0/config/allure.yml new file mode 100644 index 0000000..f42f86e --- /dev/null +++ b/lib/allure-2.22.0/config/allure.yml @@ -0,0 +1,11 @@ +plugins: + - junit-xml-plugin + - xunit-xml-plugin + - trx-plugin + - behaviors-plugin + - packages-plugin + - screen-diff-plugin + - xctest-plugin + - jira-plugin + - xray-plugin + - custom-logo-plugin diff --git a/lib/allure-2.22.0/lib/allure-commandline-2.22.0.jar b/lib/allure-2.22.0/lib/allure-commandline-2.22.0.jar new file mode 100644 index 0000000..c8c7026 Binary files /dev/null and b/lib/allure-2.22.0/lib/allure-commandline-2.22.0.jar differ diff --git a/lib/allure-2.22.0/lib/allure-generator-2.22.0.jar b/lib/allure-2.22.0/lib/allure-generator-2.22.0.jar new file mode 100644 index 0000000..0007411 Binary files /dev/null and b/lib/allure-2.22.0/lib/allure-generator-2.22.0.jar differ diff --git a/lib/allure-2.22.0/lib/allure-model-2.20.1.jar b/lib/allure-2.22.0/lib/allure-model-2.20.1.jar new file mode 100644 index 0000000..872cc87 Binary files /dev/null and b/lib/allure-2.22.0/lib/allure-model-2.20.1.jar differ diff --git a/lib/allure-2.22.0/lib/allure-plugin-api-2.22.0.jar b/lib/allure-2.22.0/lib/allure-plugin-api-2.22.0.jar new file mode 100644 index 0000000..498daea Binary files /dev/null and b/lib/allure-2.22.0/lib/allure-plugin-api-2.22.0.jar differ diff --git a/lib/allure-2.22.0/lib/allure1-model-1.0.jar b/lib/allure-2.22.0/lib/allure1-model-1.0.jar new file mode 100644 index 0000000..b3d6d60 Binary files /dev/null and b/lib/allure-2.22.0/lib/allure1-model-1.0.jar differ diff --git a/lib/allure-2.22.0/lib/annotations-15.0.jar b/lib/allure-2.22.0/lib/annotations-15.0.jar new file mode 100644 index 0000000..3f83832 Binary files /dev/null and b/lib/allure-2.22.0/lib/annotations-15.0.jar differ diff --git a/lib/allure-2.22.0/lib/commons-beanutils-1.9.4.jar b/lib/allure-2.22.0/lib/commons-beanutils-1.9.4.jar new file mode 100644 index 0000000..b73543c Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-beanutils-1.9.4.jar differ diff --git a/lib/allure-2.22.0/lib/commons-codec-1.11.jar b/lib/allure-2.22.0/lib/commons-codec-1.11.jar new file mode 100644 index 0000000..2245120 Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-codec-1.11.jar differ diff --git a/lib/allure-2.22.0/lib/commons-collections-3.2.2.jar b/lib/allure-2.22.0/lib/commons-collections-3.2.2.jar new file mode 100644 index 0000000..fa5df82 Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-collections-3.2.2.jar differ diff --git a/lib/allure-2.22.0/lib/commons-collections4-4.2.jar b/lib/allure-2.22.0/lib/commons-collections4-4.2.jar new file mode 100644 index 0000000..73a4f3f Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-collections4-4.2.jar differ diff --git a/lib/allure-2.22.0/lib/commons-io-2.11.0.jar b/lib/allure-2.22.0/lib/commons-io-2.11.0.jar new file mode 100644 index 0000000..be507d9 Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-io-2.11.0.jar differ diff --git a/lib/allure-2.22.0/lib/commons-lang3-3.12.0.jar b/lib/allure-2.22.0/lib/commons-lang3-3.12.0.jar new file mode 100644 index 0000000..4d434a2 Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-lang3-3.12.0.jar differ diff --git a/lib/allure-2.22.0/lib/commons-logging-1.2.jar b/lib/allure-2.22.0/lib/commons-logging-1.2.jar new file mode 100644 index 0000000..93a3b9f Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-logging-1.2.jar differ diff --git a/lib/allure-2.22.0/lib/commons-text-1.3.jar b/lib/allure-2.22.0/lib/commons-text-1.3.jar new file mode 100644 index 0000000..0ec9e48 Binary files /dev/null and b/lib/allure-2.22.0/lib/commons-text-1.3.jar differ diff --git a/lib/allure-2.22.0/lib/config/jetty-logging.properties b/lib/allure-2.22.0/lib/config/jetty-logging.properties new file mode 100644 index 0000000..7996ad2 --- /dev/null +++ b/lib/allure-2.22.0/lib/config/jetty-logging.properties @@ -0,0 +1,2 @@ +org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.LoggerLog +org.eclipse.jetty.LEVEL=WARN \ No newline at end of file diff --git a/lib/allure-2.22.0/lib/config/logback.xml b/lib/allure-2.22.0/lib/config/logback.xml new file mode 100644 index 0000000..09b68b0 --- /dev/null +++ b/lib/allure-2.22.0/lib/config/logback.xml @@ -0,0 +1,12 @@ + + + + + %msg%n + + + + + + + diff --git a/lib/allure-2.22.0/lib/flexmark-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-0.62.2.jar new file mode 100644 index 0000000..948349a Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-ext-tables-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-ext-tables-0.62.2.jar new file mode 100644 index 0000000..07193be Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-ext-tables-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-0.62.2.jar new file mode 100644 index 0000000..43e0c2f Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-ast-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-ast-0.62.2.jar new file mode 100644 index 0000000..f0e1d44 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-ast-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-builder-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-builder-0.62.2.jar new file mode 100644 index 0000000..d1409f8 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-builder-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-collection-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-collection-0.62.2.jar new file mode 100644 index 0000000..34860df Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-collection-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-data-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-data-0.62.2.jar new file mode 100644 index 0000000..78fc503 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-data-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-dependency-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-dependency-0.62.2.jar new file mode 100644 index 0000000..559ca26 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-dependency-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-format-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-format-0.62.2.jar new file mode 100644 index 0000000..325df93 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-format-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-html-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-html-0.62.2.jar new file mode 100644 index 0000000..d09c241 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-html-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-misc-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-misc-0.62.2.jar new file mode 100644 index 0000000..eece2d7 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-misc-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-options-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-options-0.62.2.jar new file mode 100644 index 0000000..d79534b Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-options-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-sequence-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-sequence-0.62.2.jar new file mode 100644 index 0000000..590be16 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-sequence-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/flexmark-util-visitor-0.62.2.jar b/lib/allure-2.22.0/lib/flexmark-util-visitor-0.62.2.jar new file mode 100644 index 0000000..efc2552 Binary files /dev/null and b/lib/allure-2.22.0/lib/flexmark-util-visitor-0.62.2.jar differ diff --git a/lib/allure-2.22.0/lib/freemarker-2.3.32.jar b/lib/allure-2.22.0/lib/freemarker-2.3.32.jar new file mode 100644 index 0000000..3a073d4 Binary files /dev/null and b/lib/allure-2.22.0/lib/freemarker-2.3.32.jar differ diff --git a/lib/allure-2.22.0/lib/httpclient-4.5.14.jar b/lib/allure-2.22.0/lib/httpclient-4.5.14.jar new file mode 100644 index 0000000..2bb7c07 Binary files /dev/null and b/lib/allure-2.22.0/lib/httpclient-4.5.14.jar differ diff --git a/lib/allure-2.22.0/lib/httpcore-4.4.16.jar b/lib/allure-2.22.0/lib/httpcore-4.4.16.jar new file mode 100644 index 0000000..f0bdebe Binary files /dev/null and b/lib/allure-2.22.0/lib/httpcore-4.4.16.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-annotations-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-annotations-2.14.1.jar new file mode 100644 index 0000000..e908bd3 Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-annotations-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-core-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-core-2.14.1.jar new file mode 100644 index 0000000..cc02583 Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-core-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-databind-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-databind-2.14.1.jar new file mode 100644 index 0000000..1ac8096 Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-databind-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-dataformat-xml-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-dataformat-xml-2.14.1.jar new file mode 100644 index 0000000..22266e3 Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-dataformat-xml-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-dataformat-yaml-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-dataformat-yaml-2.14.1.jar new file mode 100644 index 0000000..9ccddcb Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-dataformat-yaml-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jackson-module-jaxb-annotations-2.14.1.jar b/lib/allure-2.22.0/lib/jackson-module-jaxb-annotations-2.14.1.jar new file mode 100644 index 0000000..23f72d2 Binary files /dev/null and b/lib/allure-2.22.0/lib/jackson-module-jaxb-annotations-2.14.1.jar differ diff --git a/lib/allure-2.22.0/lib/jakarta.activation-api-1.2.2.jar b/lib/allure-2.22.0/lib/jakarta.activation-api-1.2.2.jar new file mode 100644 index 0000000..3cc969d Binary files /dev/null and b/lib/allure-2.22.0/lib/jakarta.activation-api-1.2.2.jar differ diff --git a/lib/allure-2.22.0/lib/jakarta.xml.bind-api-2.3.3.jar b/lib/allure-2.22.0/lib/jakarta.xml.bind-api-2.3.3.jar new file mode 100644 index 0000000..b8c7dc1 Binary files /dev/null and b/lib/allure-2.22.0/lib/jakarta.xml.bind-api-2.3.3.jar differ diff --git a/lib/allure-2.22.0/lib/javax.activation-api-1.2.0.jar b/lib/allure-2.22.0/lib/javax.activation-api-1.2.0.jar new file mode 100644 index 0000000..986c365 Binary files /dev/null and b/lib/allure-2.22.0/lib/javax.activation-api-1.2.0.jar differ diff --git a/lib/allure-2.22.0/lib/javax.servlet-api-3.1.0.jar b/lib/allure-2.22.0/lib/javax.servlet-api-3.1.0.jar new file mode 100644 index 0000000..6b14c3d Binary files /dev/null and b/lib/allure-2.22.0/lib/javax.servlet-api-3.1.0.jar differ diff --git a/lib/allure-2.22.0/lib/jaxb-api-2.3.1.jar b/lib/allure-2.22.0/lib/jaxb-api-2.3.1.jar new file mode 100644 index 0000000..4565865 Binary files /dev/null and b/lib/allure-2.22.0/lib/jaxb-api-2.3.1.jar differ diff --git a/lib/allure-2.22.0/lib/jaxb-utils-1.0.jar b/lib/allure-2.22.0/lib/jaxb-utils-1.0.jar new file mode 100644 index 0000000..2c54fb1 Binary files /dev/null and b/lib/allure-2.22.0/lib/jaxb-utils-1.0.jar differ diff --git a/lib/allure-2.22.0/lib/jcommander-1.82.jar b/lib/allure-2.22.0/lib/jcommander-1.82.jar new file mode 100644 index 0000000..90f4424 Binary files /dev/null and b/lib/allure-2.22.0/lib/jcommander-1.82.jar differ diff --git a/lib/allure-2.22.0/lib/jetty-http-9.4.49.v20220914.jar b/lib/allure-2.22.0/lib/jetty-http-9.4.49.v20220914.jar new file mode 100644 index 0000000..995b28d Binary files /dev/null and b/lib/allure-2.22.0/lib/jetty-http-9.4.49.v20220914.jar differ diff --git a/lib/allure-2.22.0/lib/jetty-io-9.4.49.v20220914.jar b/lib/allure-2.22.0/lib/jetty-io-9.4.49.v20220914.jar new file mode 100644 index 0000000..00892ed Binary files /dev/null and b/lib/allure-2.22.0/lib/jetty-io-9.4.49.v20220914.jar differ diff --git a/lib/allure-2.22.0/lib/jetty-server-9.4.49.v20220914.jar b/lib/allure-2.22.0/lib/jetty-server-9.4.49.v20220914.jar new file mode 100644 index 0000000..cdc00cc Binary files /dev/null and b/lib/allure-2.22.0/lib/jetty-server-9.4.49.v20220914.jar differ diff --git a/lib/allure-2.22.0/lib/jetty-util-9.4.49.v20220914.jar b/lib/allure-2.22.0/lib/jetty-util-9.4.49.v20220914.jar new file mode 100644 index 0000000..1565e1e Binary files /dev/null and b/lib/allure-2.22.0/lib/jetty-util-9.4.49.v20220914.jar differ diff --git a/lib/allure-2.22.0/lib/logback-classic-1.3.5.jar b/lib/allure-2.22.0/lib/logback-classic-1.3.5.jar new file mode 100644 index 0000000..3bd86d3 Binary files /dev/null and b/lib/allure-2.22.0/lib/logback-classic-1.3.5.jar differ diff --git a/lib/allure-2.22.0/lib/logback-core-1.3.5.jar b/lib/allure-2.22.0/lib/logback-core-1.3.5.jar new file mode 100644 index 0000000..98d3be5 Binary files /dev/null and b/lib/allure-2.22.0/lib/logback-core-1.3.5.jar differ diff --git a/lib/allure-2.22.0/lib/opencsv-4.6.jar b/lib/allure-2.22.0/lib/opencsv-4.6.jar new file mode 100644 index 0000000..a2d5d57 Binary files /dev/null and b/lib/allure-2.22.0/lib/opencsv-4.6.jar differ diff --git a/lib/allure-2.22.0/lib/properties-2.0.RC5.jar b/lib/allure-2.22.0/lib/properties-2.0.RC5.jar new file mode 100644 index 0000000..da41c55 Binary files /dev/null and b/lib/allure-2.22.0/lib/properties-2.0.RC5.jar differ diff --git a/lib/allure-2.22.0/lib/slf4j-api-2.0.3.jar b/lib/allure-2.22.0/lib/slf4j-api-2.0.3.jar new file mode 100644 index 0000000..c0b0066 Binary files /dev/null and b/lib/allure-2.22.0/lib/slf4j-api-2.0.3.jar differ diff --git a/lib/allure-2.22.0/lib/snakeyaml-1.33.jar b/lib/allure-2.22.0/lib/snakeyaml-1.33.jar new file mode 100644 index 0000000..5a95195 Binary files /dev/null and b/lib/allure-2.22.0/lib/snakeyaml-1.33.jar differ diff --git a/lib/allure-2.22.0/lib/stax2-api-4.2.1.jar b/lib/allure-2.22.0/lib/stax2-api-4.2.1.jar new file mode 100644 index 0000000..28c6a08 Binary files /dev/null and b/lib/allure-2.22.0/lib/stax2-api-4.2.1.jar differ diff --git a/lib/allure-2.22.0/lib/tika-core-2.6.0.jar b/lib/allure-2.22.0/lib/tika-core-2.6.0.jar new file mode 100644 index 0000000..b97ad1a Binary files /dev/null and b/lib/allure-2.22.0/lib/tika-core-2.6.0.jar differ diff --git a/lib/allure-2.22.0/lib/woodstox-core-6.4.0.jar b/lib/allure-2.22.0/lib/woodstox-core-6.4.0.jar new file mode 100644 index 0000000..6cdf94c Binary files /dev/null and b/lib/allure-2.22.0/lib/woodstox-core-6.4.0.jar differ diff --git a/lib/allure-2.22.0/plugins/README.txt b/lib/allure-2.22.0/plugins/README.txt new file mode 100644 index 0000000..30feb4d --- /dev/null +++ b/lib/allure-2.22.0/plugins/README.txt @@ -0,0 +1 @@ +The directory with Allure plugins. To add the plugin simply unpack it to this folder. \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/behaviors-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/behaviors-plugin/allure-plugin.yml new file mode 100644 index 0000000..90f7647 --- /dev/null +++ b/lib/allure-2.22.0/plugins/behaviors-plugin/allure-plugin.yml @@ -0,0 +1,7 @@ +id: behaviors +name: Behaviors aggregator +description: The aggregator adds behaviors tab to the report +extensions: + - io.qameta.allure.behaviors.BehaviorsPlugin +jsFiles: + - index.js \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/behaviors-plugin/behaviors-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/behaviors-plugin/behaviors-plugin-2.22.0.jar new file mode 100644 index 0000000..db82929 Binary files /dev/null and b/lib/allure-2.22.0/plugins/behaviors-plugin/behaviors-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/behaviors-plugin/static/index.js b/lib/allure-2.22.0/plugins/behaviors-plugin/static/index.js new file mode 100644 index 0000000..afa463b --- /dev/null +++ b/lib/allure-2.22.0/plugins/behaviors-plugin/static/index.js @@ -0,0 +1,206 @@ +'use strict'; + +allure.api.addTranslation('en', { + tab: { + behaviors: { + name: 'Behaviors' + } + }, + widget: { + behaviors: { + name: 'Features by stories', + showAll: 'show all' + } + } +}); + +allure.api.addTranslation('ru', { + tab: { + behaviors: { + name: 'Функциональность' + } + }, + widget: { + behaviors: { + name: 'Функциональность', + showAll: 'показать все' + } + } +}); + +allure.api.addTranslation('zh', { + tab: { + behaviors: { + name: '功能' + } + }, + widget: { + behaviors: { + name: '特性场景', + showAll: '显示所有' + } + } +}); + +allure.api.addTranslation('de', { + tab: { + behaviors: { + name: 'Verhalten' + } + }, + widget: { + behaviors: { + name: 'Features nach Stories', + showAll: 'Zeige alle' + } + } +}); + +allure.api.addTranslation('nl', { + tab: { + behaviors: { + name: 'Functionaliteit' + } + }, + widget: { + behaviors: { + name: 'Features en story’s', + showAll: 'Toon alle' + } + } +}); + +allure.api.addTranslation('he', { + tab: { + behaviors: { + name: 'התנהגויות' + } + }, + widget: { + behaviors: { + name: 'תכונות לפי סיפורי משתמש', + showAll: 'הצג הכול' + } + } +}); + +allure.api.addTranslation('br', { + tab: { + behaviors: { + name: 'Comportamentos' + } + }, + widget: { + behaviors: { + name: 'Funcionalidades por história', + showAll: 'Mostrar tudo' + } + } +}); + +allure.api.addTranslation('ja', { + tab: { + behaviors: { + name: '振る舞い' + } + }, + widget: { + behaviors: { + name: 'ストーリー別の機能', + showAll: '全て表示' + } + } +}); + +allure.api.addTranslation('es', { + tab: { + behaviors: { + name: 'Funcionalidades' + } + }, + widget: { + behaviors: { + name: 'Funcionalidades por Historias de Usuario', + showAll: 'mostrar todo' + } + } +}); + +allure.api.addTranslation('kr', { + tab: { + behaviors: { + name: '동작' + } + }, + widget: { + behaviors: { + name: '스토리별 기능', + showAll: '전체 보기' + } + } +}); + +allure.api.addTranslation('fr', { + tab: { + behaviors: { + name: 'Comportements' + } + }, + widget: { + behaviors: { + name: 'Thèmes par histoires', + showAll: 'Montrer tout' + } + } +}); + +allure.api.addTranslation('pl', { + tab: { + behaviors: { + name: 'Zachowania' + } + }, + widget: { + behaviors: { + name: 'Funkcje według historii', + showAll: 'pokaż wszystko' + } + } +}); + +allure.api.addTranslation('az', { + tab: { + behaviors: { + name: 'Davranışlar' + } + }, + widget: { + behaviors: { + name: 'Hekayələr üzrə xüsusiyyətlər', + showAll: 'hamısını göstər' + } + } +}); + +allure.api.addTab('behaviors', { + title: 'tab.behaviors.name', icon: 'fa fa-list', + route: 'behaviors(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)', + onEnter: (function (testGroup, testResult, testResultTab) { + return new allure.components.TreeLayout({ + testGroup: testGroup, + testResult: testResult, + testResultTab: testResultTab, + tabName: 'tab.behaviors.name', + baseUrl: 'behaviors', + url: 'data/behaviors.json', + csvUrl: 'data/behaviors.csv' + }); + }) +}); + +allure.api.addWidget('widgets', 'behaviors', allure.components.WidgetStatusView.extend({ + rowTag: 'a', + title: 'widget.behaviors.name', + baseUrl: 'behaviors', + showLinks: true +})); diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/custom-logo-plugin/allure-plugin.yml new file mode 100644 index 0000000..401e94c --- /dev/null +++ b/lib/allure-2.22.0/plugins/custom-logo-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: custom-logo +name: Custom logo aggregator +description: The aggregator replaces default Allure logo with a custom one +cssFiles: + - styles.css \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/custom-logo-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/custom-logo-plugin/custom-logo-plugin-2.22.0.jar new file mode 100644 index 0000000..b101103 Binary files /dev/null and b/lib/allure-2.22.0/plugins/custom-logo-plugin/custom-logo-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/static/custom-logo.svg b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/custom-logo.svg new file mode 100644 index 0000000..ca3d1d7 --- /dev/null +++ b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/custom-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg new file mode 100644 index 0000000..b864454 --- /dev/null +++ b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/custom-logo-plugin/static/styles.css b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/styles.css new file mode 100644 index 0000000..85d5c5c --- /dev/null +++ b/lib/allure-2.22.0/plugins/custom-logo-plugin/static/styles.css @@ -0,0 +1,11 @@ +.side-nav__brand { + background: url('logo.svg') no-repeat left center !important; + margin-left: 10px; + height: 65px; + width: 150px; + background-size: contain !important; +} +.side-nav__brand span{ + display: none; +} + \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/jira-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/jira-plugin/allure-plugin.yml new file mode 100644 index 0000000..c36b0bb --- /dev/null +++ b/lib/allure-2.22.0/plugins/jira-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: jira +name: Jira Plugin +description: The plugin that adds support for Jira integration. +extensions: + - io.qameta.allure.jira.JiraExportPlugin diff --git a/lib/allure-2.22.0/plugins/jira-plugin/jira-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/jira-plugin/jira-plugin-2.22.0.jar new file mode 100644 index 0000000..ba96d3c Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/jira-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/allure-jira-commons-2.22.0.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/allure-jira-commons-2.22.0.jar new file mode 100644 index 0000000..2588599 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/allure-jira-commons-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/converter-jackson-2.6.1.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/converter-jackson-2.6.1.jar new file mode 100644 index 0000000..94a3747 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/converter-jackson-2.6.1.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-annotations-2.14.1.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-annotations-2.14.1.jar new file mode 100644 index 0000000..e908bd3 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-annotations-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-core-2.14.1.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-core-2.14.1.jar new file mode 100644 index 0000000..cc02583 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-core-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-databind-2.14.1.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-databind-2.14.1.jar new file mode 100644 index 0000000..1ac8096 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/jackson-databind-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/okhttp-3.12.0.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/okhttp-3.12.0.jar new file mode 100644 index 0000000..85fe711 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/okhttp-3.12.0.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/okio-1.15.0.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/okio-1.15.0.jar new file mode 100644 index 0000000..ab8ab73 Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/okio-1.15.0.jar differ diff --git a/lib/allure-2.22.0/plugins/jira-plugin/lib/retrofit-2.6.1.jar b/lib/allure-2.22.0/plugins/jira-plugin/lib/retrofit-2.6.1.jar new file mode 100644 index 0000000..211539a Binary files /dev/null and b/lib/allure-2.22.0/plugins/jira-plugin/lib/retrofit-2.6.1.jar differ diff --git a/lib/allure-2.22.0/plugins/junit-xml-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/junit-xml-plugin/allure-plugin.yml new file mode 100644 index 0000000..6d3d1c4 --- /dev/null +++ b/lib/allure-2.22.0/plugins/junit-xml-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: junit +name: JUnit Plugin +description: The plugin that adds support for results in JUnit.xml data format. +extensions: + - io.qameta.allure.junitxml.JunitXmlPlugin \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/junit-xml-plugin/junit-xml-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/junit-xml-plugin/junit-xml-plugin-2.22.0.jar new file mode 100644 index 0000000..352babb Binary files /dev/null and b/lib/allure-2.22.0/plugins/junit-xml-plugin/junit-xml-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/packages-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/packages-plugin/allure-plugin.yml new file mode 100644 index 0000000..6c12456 --- /dev/null +++ b/lib/allure-2.22.0/plugins/packages-plugin/allure-plugin.yml @@ -0,0 +1,7 @@ +id: packages +name: Packages aggregator +description: The aggregator adds packages tab to the report +extensions: + - io.qameta.allure.packages.PackagesPlugin +jsFiles: + - index.js \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/packages-plugin/packages-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/packages-plugin/packages-plugin-2.22.0.jar new file mode 100644 index 0000000..648f637 Binary files /dev/null and b/lib/allure-2.22.0/plugins/packages-plugin/packages-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/packages-plugin/static/index.js b/lib/allure-2.22.0/plugins/packages-plugin/static/index.js new file mode 100644 index 0000000..cbc55c0 --- /dev/null +++ b/lib/allure-2.22.0/plugins/packages-plugin/static/index.js @@ -0,0 +1,120 @@ +'use strict'; + +allure.api.addTranslation('en', { + tab: { + packages: { + name: 'Packages' + } + } +}); + +allure.api.addTranslation('ru', { + tab: { + packages: { + name: 'Пакеты' + } + } +}); + +allure.api.addTranslation('zh', { + tab: { + packages: { + name: '包' + } + } +}); + +allure.api.addTranslation('de', { + tab: { + packages: { + name: 'Pakete' + } + } +}); + +allure.api.addTranslation('nl', { + tab: { + packages: { + name: 'Packages' + } + } +}); + +allure.api.addTranslation('he', { + tab: { + packages: { + name: 'חבילות' + } + } +}); + +allure.api.addTranslation('br', { + tab: { + packages: { + name: 'Pacotes' + } + } +}); + +allure.api.addTranslation('ja', { + tab: { + packages: { + name: 'パッケージ' + } + } +}); + +allure.api.addTranslation('es', { + tab: { + packages: { + name: 'Paquetes' + } + } +}); + +allure.api.addTranslation('kr', { + tab: { + packages: { + name: '패키지' + } + } +}); + +allure.api.addTranslation('fr', { + tab: { + packages: { + name: 'Paquets' + } + } +}); + +allure.api.addTranslation('pl', { + tab: { + packages: { + name: 'Pakiety' + } + } +}); + +allure.api.addTranslation('az', { + tab: { + packages: { + name: 'Paketlər' + } + } +}); + +allure.api.addTab('packages', { + title: 'tab.packages.name', icon: 'fa fa-align-left', + route: 'packages(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)', + onEnter: (function (testGroup, testResult, testResultTab) { + return new allure.components.TreeLayout({ + testGroup: testGroup, + testResult: testResult, + testResultTab: testResultTab, + tabName: 'tab.packages.name', + baseUrl: 'packages', + url: 'data/packages.json' + }); + }) +}); diff --git a/lib/allure-2.22.0/plugins/screen-diff-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/screen-diff-plugin/allure-plugin.yml new file mode 100644 index 0000000..0483674 --- /dev/null +++ b/lib/allure-2.22.0/plugins/screen-diff-plugin/allure-plugin.yml @@ -0,0 +1,7 @@ +id: screen-diff +name: Screen diff +description: Who cares about description by just-boris +jsFiles: + - index.js +cssFiles: + - styles.css \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/screen-diff-plugin/screen-diff-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/screen-diff-plugin/screen-diff-plugin-2.22.0.jar new file mode 100644 index 0000000..aeb7fd8 Binary files /dev/null and b/lib/allure-2.22.0/plugins/screen-diff-plugin/screen-diff-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/screen-diff-plugin/static/index.js b/lib/allure-2.22.0/plugins/screen-diff-plugin/static/index.js new file mode 100644 index 0000000..3774f88 --- /dev/null +++ b/lib/allure-2.22.0/plugins/screen-diff-plugin/static/index.js @@ -0,0 +1,200 @@ +(function () { + var settings = allure.getPluginSettings('screen-diff', { diffType: 'diff' }); + + function renderImage(src) { + return ( + '
' + + '' + + '
' + ); + } + + function findImage(data, name) { + if (data.testStage && data.testStage.attachments) { + var matchedImage = data.testStage.attachments.filter(function (attachment) { + return attachment.name === name; + })[0]; + if (matchedImage) { + return 'data/attachments/' + matchedImage.source; + } + } + return null; + } + + function renderDiffContent(type, diffImage, actualImage, expectedImage) { + if (type === 'diff') { + if (diffImage) { + return renderImage(diffImage); + } + } + if (type === 'overlay' && expectedImage) { + return ( + '
' + + '' + + '
' + + '' + + '
' + + '
' + ); + } + if (actualImage) { + return renderImage(actualImage); + } + return 'No diff data provided'; + } + + var TestResultView = Backbone.Marionette.View.extend({ + regions: { + subView: '.screen-diff-view', + }, + template: function () { + return '
'; + }, + onRender: function () { + var data = this.model.toJSON(); + var testType = data.labels.filter(function (label) { + return label.name === 'testType'; + })[0]; + var diffImage = findImage(data, 'diff'); + var actualImage = findImage(data, 'actual'); + var expectedImage = findImage(data, 'expected'); + if (!testType || testType.value !== 'screenshotDiff') { + return; + } + this.showChildView( + 'subView', + new ScreenDiffView({ + diffImage: diffImage, + actualImage: actualImage, + expectedImage: expectedImage, + }), + ); + }, + }); + var ErrorView = Backbone.Marionette.View.extend({ + templateContext: function () { + return this.options; + }, + template: function (data) { + return '
' + data.error + '
'; + }, + }); + var AttachmentView = Backbone.Marionette.View.extend({ + regions: { + subView: '.screen-diff-view', + }, + template: function () { + return '
'; + }, + onRender: function () { + jQuery + .getJSON(this.options.sourceUrl) + .then(this.renderScreenDiffView.bind(this), this.renderErrorView.bind(this)); + }, + renderErrorView: function (error) { + console.log(error); + this.showChildView( + 'subView', + new ErrorView({ + error: error.statusText, + }), + ); + }, + renderScreenDiffView: function (data) { + this.showChildView( + 'subView', + new ScreenDiffView({ + diffImage: data.diff, + actualImage: data.actual, + expectedImage: data.expected, + }), + ); + }, + }); + + var ScreenDiffView = Backbone.Marionette.View.extend({ + className: 'pane__section', + events: function () { + return { + ['click [name="screen-diff-type-' + this.cid + '"]']: 'onDiffTypeChange', + 'mousemove .screen-diff__overlay': 'onOverlayMove', + }; + }, + initialize: function (options) { + this.diffImage = options.diffImage; + this.actualImage = options.actualImage; + this.expectedImage = options.expectedImage; + this.radioName = 'screen-diff-type-' + this.cid; + }, + templateContext: function () { + return { + diffType: settings.get('diffType'), + diffImage: this.diffImage, + actualImage: this.actualImage, + expectedImage: this.expectedImage, + radioName: this.radioName, + }; + }, + template: function (data) { + if (!data.diffImage && !data.actualImage && !data.expectedImage) { + return ''; + } + + return ( + '

Screen Diff

' + + '
' + + '
' + + '' + + '' + + '
' + + renderDiffContent( + data.diffType, + data.diffImage, + data.actualImage, + data.expectedImage, + ) + + '
' + ); + }, + adjustImageSize: function (event) { + var overImage = this.$(event.target); + overImage.width(overImage.width()); + }, + onRender: function () { + const diffType = settings.get('diffType'); + this.$('[name="' + this.radioName + '"][value="' + diffType + '"]').prop( + 'checked', + true, + ); + if (diffType === 'overlay') { + this.$('.screen-diff__image-over img').on('load', this.adjustImageSize.bind(this)); + } + }, + onOverlayMove: function (event) { + var pageX = event.pageX; + var containerScroll = this.$('.screen-diff__container').scrollLeft(); + var elementX = event.currentTarget.getBoundingClientRect().left; + var delta = pageX - elementX + containerScroll; + this.$('.screen-diff__image-over').width(delta); + }, + onDiffTypeChange: function (event) { + settings.save('diffType', event.target.value); + this.render(); + }, + }); + allure.api.addTestResultBlock(TestResultView, { position: 'before' }); + allure.api.addAttachmentViewer('application/vnd.allure.image.diff', { + View: AttachmentView, + icon: 'fa fa-exchange', + }); +})(); diff --git a/lib/allure-2.22.0/plugins/screen-diff-plugin/static/styles.css b/lib/allure-2.22.0/plugins/screen-diff-plugin/static/styles.css new file mode 100644 index 0000000..6cf2219 --- /dev/null +++ b/lib/allure-2.22.0/plugins/screen-diff-plugin/static/styles.css @@ -0,0 +1,30 @@ +.screen-diff__switchers { + margin-bottom: 1em; +} + +.screen-diff__switchers label + label { + margin-left: 1em; +} + +.screen-diff__overlay { + position: relative; + cursor: col-resize; +} + +.screen-diff__container { + overflow-x: auto; +} + +.screen-diff__image-over { + top: 0; + left: 0; + bottom: 0; + background: #fff; + position: absolute; + overflow: hidden; + box-shadow: 2px 0 1px -1px #aaa; +} + +.screen-diff-error { + color: #fd5a3e; +} diff --git a/lib/allure-2.22.0/plugins/trx-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/trx-plugin/allure-plugin.yml new file mode 100644 index 0000000..b0b2657 --- /dev/null +++ b/lib/allure-2.22.0/plugins/trx-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: trx +name: XUnit TRX Plugin +description: The plugin that adds support for results TRX data format. +extensions: + - io.qameta.allure.trx.TrxPlugin \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/trx-plugin/trx-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/trx-plugin/trx-plugin-2.22.0.jar new file mode 100644 index 0000000..68a27a2 Binary files /dev/null and b/lib/allure-2.22.0/plugins/trx-plugin/trx-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xctest-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/xctest-plugin/allure-plugin.yml new file mode 100644 index 0000000..be6b7f4 --- /dev/null +++ b/lib/allure-2.22.0/plugins/xctest-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: xctest +name: XCTest Plugin +description: The plugin that adds support for results XCTest data format. +extensions: + - io.qameta.allure.xctest.XcTestPlugin \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/xctest-plugin/lib/xmlwise-1.2.11.jar b/lib/allure-2.22.0/plugins/xctest-plugin/lib/xmlwise-1.2.11.jar new file mode 100644 index 0000000..a2b5f0d Binary files /dev/null and b/lib/allure-2.22.0/plugins/xctest-plugin/lib/xmlwise-1.2.11.jar differ diff --git a/lib/allure-2.22.0/plugins/xctest-plugin/xctest-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/xctest-plugin/xctest-plugin-2.22.0.jar new file mode 100644 index 0000000..0aa8dec Binary files /dev/null and b/lib/allure-2.22.0/plugins/xctest-plugin/xctest-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/xray-plugin/allure-plugin.yml new file mode 100644 index 0000000..231ce80 --- /dev/null +++ b/lib/allure-2.22.0/plugins/xray-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: xray +name: Xray Plugin +description: The plugin that adds support for Xray integration. +extensions: + - io.qameta.allure.xray.XrayTestRunExportPlugin diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/allure-jira-commons-2.22.0.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/allure-jira-commons-2.22.0.jar new file mode 100644 index 0000000..2588599 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/allure-jira-commons-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/converter-jackson-2.6.1.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/converter-jackson-2.6.1.jar new file mode 100644 index 0000000..94a3747 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/converter-jackson-2.6.1.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-annotations-2.14.1.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-annotations-2.14.1.jar new file mode 100644 index 0000000..e908bd3 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-annotations-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-core-2.14.1.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-core-2.14.1.jar new file mode 100644 index 0000000..cc02583 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-core-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-databind-2.14.1.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-databind-2.14.1.jar new file mode 100644 index 0000000..1ac8096 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/jackson-databind-2.14.1.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/okhttp-3.12.0.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/okhttp-3.12.0.jar new file mode 100644 index 0000000..85fe711 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/okhttp-3.12.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/okio-1.15.0.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/okio-1.15.0.jar new file mode 100644 index 0000000..ab8ab73 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/okio-1.15.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/lib/retrofit-2.6.1.jar b/lib/allure-2.22.0/plugins/xray-plugin/lib/retrofit-2.6.1.jar new file mode 100644 index 0000000..211539a Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/lib/retrofit-2.6.1.jar differ diff --git a/lib/allure-2.22.0/plugins/xray-plugin/xray-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/xray-plugin/xray-plugin-2.22.0.jar new file mode 100644 index 0000000..9723d5f Binary files /dev/null and b/lib/allure-2.22.0/plugins/xray-plugin/xray-plugin-2.22.0.jar differ diff --git a/lib/allure-2.22.0/plugins/xunit-xml-plugin/allure-plugin.yml b/lib/allure-2.22.0/plugins/xunit-xml-plugin/allure-plugin.yml new file mode 100644 index 0000000..ca50c51 --- /dev/null +++ b/lib/allure-2.22.0/plugins/xunit-xml-plugin/allure-plugin.yml @@ -0,0 +1,5 @@ +id: xunit-xml +name: XUnit XML v2 Plugin +description: The plugin that adds support for results in Xunit.net xml data format. +extensions: + - io.qameta.allure.xunitxml.XunitXmlPlugin \ No newline at end of file diff --git a/lib/allure-2.22.0/plugins/xunit-xml-plugin/xunit-xml-plugin-2.22.0.jar b/lib/allure-2.22.0/plugins/xunit-xml-plugin/xunit-xml-plugin-2.22.0.jar new file mode 100644 index 0000000..06fee88 Binary files /dev/null and b/lib/allure-2.22.0/plugins/xunit-xml-plugin/xunit-xml-plugin-2.22.0.jar differ diff --git a/pytest.ini b/pytest.ini index 5793c0c..ba1d623 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,10 +1,10 @@ [pytest] # cmd params -addopts = -s --capture=sys --self-contained-html --reruns=0 --reruns-delay=5 +addopts = -s --cache-clear --capture=sys --self-contained-html --reruns=2 --reruns-delay=5 disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True markers = - test_login: login - test_login_excel: login excel - test_new_project: new_project + test_login_demo: login + test_login_excel_demo: login excel + test_new_project_demo: new_project test_softbot: softbot auto: auto generate case \ No newline at end of file diff --git a/run.py b/run.py index 74f2310..2676e20 100644 --- a/run.py +++ b/run.py @@ -17,55 +17,116 @@ import os import shutil import pytest -from config.project_path import REPORT_DIR, LOG_DIR, AUTO_CASE_DIR, CONF_DIR +from config.project_path import REPORT_DIR, LOG_DIR, AUTO_CASE_DIR, CONF_DIR, LIB_DIR, ALLURE_RESULTS_DIR, \ + ALLURE_HTML_DIR from case_utils.case_handle import get_case_data from loguru import logger import click -from config.settings import REPORT_NAME, LOG_LEVEL +from config.settings import LOG_LEVEL, ENV_INFO from datetime import datetime +from case_utils.platform_handle import PlatformHandle +from case_utils.get_results_handle import get_test_results_from_pytest_html_report, \ + get_test_results_from_from_allure_report +from case_utils.send_result_handle import send_result +from case_utils.allure_handle import AllureReportBeautiful +from common_utils.files_handle import zip_file @click.command() -@click.option("-env", default=None, help="输入运行环境:test 或 live") +@click.option("-report", default="allure", help="选择需要生成的测试报告:pytest-html, allure") +@click.option("-env", default="test", help="输入运行环境:test 或 live") @click.option("-m", default=None, help="选择需要运行的用例:python.ini配置的名称") -def run(env, m): - # 捕获所有日志 - logger.add(os.path.join(LOG_DIR, "runtime_{time}_all.log"), enqueue=True, encoding="utf-8", rotation="00:00", - format="{time:YYYY-MM-DD HH:mm:ss} {level} From {module}.{function} : {message}") - # 仅捕获指定级别日志 - logger.add(os.path.join(LOG_DIR, "runtime_{time}_all.log"), enqueue=True, encoding="utf-8", rotation="00:00", - level=LOG_LEVEL.upper(), - format="{time:YYYY-MM-DD HH:mm:ss} {level} From {module}.{function} : {message}") - logger.info(""" - _ _ _ _____ _ - __ _ _ __ (_) / \\ _ _| |_ __|_ _|__ ___| |_ - / _` | "_ \\| | / _ \\| | | | __/ _ \\| |/ _ \\/ __| __| - | (_| | |_) | |/ ___ \\ |_| | || (_) | | __/\\__ \\ |_ - \\__,_| .__/|_/_/ \\_\\__,_|\\__\\___/|_|\\___||___/\\__| - |_| - Starting ... ... ... - """) - # 生成case在执行 - if os.path.exists(AUTO_CASE_DIR): - # 删除文件夹 - shutil.rmtree(AUTO_CASE_DIR) +def run(env, m, report): + try: + # ------------------------ 捕获日志 ------------------------ + # 捕获所有日志 + logger.add(os.path.join(LOG_DIR, "runtime_{time}_all.log"), enqueue=True, encoding="utf-8", rotation="00:00", + format="{time:YYYY-MM-DD HH:mm:ss} {level} From {module}.{function} : {message}") + # 仅捕获指定级别日志 + logger.add(os.path.join(LOG_DIR, "runtime_{time}.log"), enqueue=True, encoding="utf-8", rotation="00:00", + level=LOG_LEVEL.upper(), + format="{time:YYYY-MM-DD HH:mm:ss} {level} From {module}.{function} : {message}") + logger.info(""" + _ _ _ _____ _ + __ _ _ __ (_) / \\ _ _| |_ __|_ _|__ ___| |_ + / _` | "_ \\| | / _ \\| | | | __/ _ \\| |/ _ \\/ __| __| + | (_| | |_) | |/ ___ \\ |_| | || (_) | | __/\\__ \\ |_ + \\__,_| .__/|_/_/ \\_\\__,_|\\__\\___/|_|\\___||___/\\__| + |_| + Starting ... ... ... + """) + # ------------------------ 自动生成测试用例 ------------------------ + # 删除原有的测试用例,以便生成新的测试用例 + if os.path.exists(AUTO_CASE_DIR): + # 删除文件夹 + shutil.rmtree(AUTO_CASE_DIR) - if os.path.exists('outputs/report/'): - shutil.rmtree(path='outputs/report/') + # 根据data里面的yaml/excel文件,自动生成测试用例 + get_case_data() - # 获取用例 - get_case_data() - # 执行用例 - current_time = datetime.now().strftime("%Y-%m-%d %H_%M_%S") - report_name = os.path.join(REPORT_DIR, REPORT_NAME + str(current_time) + ".html") - report_css = os.path.join(CONF_DIR, "report.css") - arg_list = [f'--html={report_name}', f"--css={report_css}"] - if env == "live": - arg_list.append("--env=live") - # 执行指定测试用例 - if m is not None: - arg_list.append(f"-m {m}") - pytest.main(args=arg_list) + # ------------------------ pytest执行测试用例 ------------------------ + """ + pytest相关参数:以下也可通过pytest.ini配置 + --reruns: 失败重跑次数 + --reruns-delay 失败重跑间隔时间 + --count: 重复执行次数 + -v: 显示错误位置以及错误的详细信息 + -s: 等价于 pytest --capture=no 可以捕获print函数的输出 + -q: 简化输出信息 + -m: 运行指定标签的测试用例 + -x: 一旦错误,则停止运行 + --cache-clear 清除pytest的缓存,包括测试结果缓存、抓取的fixture实例缓存和收集器信息缓存等 + --maxfail: 设置最大失败次数,当超出这个阈值时,则不会在执行测试用例 + "--reruns=3", "--reruns-delay=2" + """ + arg_list = [] + if env.lower() == "live": + arg_list.append("--env=live") + # 执行指定测试用例 + if m is not None: + arg_list.append(f"-m {m}") + if report.lower() == "allure": + arg_list.extend(['-q', '--cache-clear', f'--alluredir={ALLURE_RESULTS_DIR}', '--clean-alluredir']) + """ + allure相关参数: + –-alluredir这个选项用于指定存储测试结果的路径 + """ + pytest.main(args=arg_list) + # ------------------------ 使用allure生成测试报告 ------------------------ + # 往allure测试结果集目录写入环境配置相关信息 + ENV_INFO["project_env"] = env + AllureReportBeautiful(allure_results_path=ALLURE_RESULTS_DIR).set_report_env(env_info=ENV_INFO) + logger.debug("-------开始生成allure测试报告-------") + plat = PlatformHandle() + # 从LIB_DIR目录中寻找以allure开头的目录作为allure模块的目录,并进入bin目录下 + allure_path = os.path.join(LIB_DIR, [i for i in os.listdir(LIB_DIR) if i.startswith("allure")][0], "bin") + # 根据windows或linux环境判断, 执行指定的命令。plat.allure[0]=cmd, plat.allure[1]=cmd2 + cmd = plat.allure[1].format(os.path.join(allure_path, plat.allure[0]), ALLURE_RESULTS_DIR, ALLURE_HTML_DIR) + # 执行命令行命令,并通过read()方法将命令的结果返回;os.popen() 方法用于从一个命令打开一个管道。在Unix,Windows中有效 + os.popen(cmd).read() + logger.debug("-------美化allure测试报告-------") + AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_windows_title( + new_title=ENV_INFO["project_name"]) + AllureReportBeautiful(allure_html_path=ALLURE_HTML_DIR).set_report_name(new_name=ENV_INFO["report_title"]) + logger.debug("-------allure测试报告生成完毕,开始发送测试报告-------") + # 发送从allure-html获取的测试报告 + results = get_test_results_from_from_allure_report(ALLURE_HTML_DIR) + # 压缩allure-html报告为一个压缩文件zip + allure_zip_path = os.path.join(REPORT_DIR, f'{ENV_INFO["report_name"]}.zip') + zip_file(in_path=ALLURE_HTML_DIR, out_path=allure_zip_path) + send_result(results=results, attachment_path=allure_zip_path) + else: + current_time = datetime.now().strftime("%Y-%m-%d %H_%M_%S") + report_path = os.path.join(REPORT_DIR, ENV_INFO["report_name"] + str(current_time) + ".html") + report_css = os.path.join(CONF_DIR, "pytest_html_report.css") + arg_list.extend([f'--html={report_path}', f"--css={report_css}"]) + pytest.main(args=arg_list) + logger.debug("-------测试完成,发送测试报告-------") + # 发送从pytest-html获取的测试报告 + results = get_test_results_from_pytest_html_report(report_path) + send_result(results=results, attachment_path=report_path) + except Exception as e: + raise e if __name__ == '__main__': diff --git a/test_case/test_manual_case/test_demo.py b/test_case/test_manual_case/test_demo.py index bbb46a5..0885aaf 100644 --- a/test_case/test_manual_case/test_demo.py +++ b/test_case/test_manual_case/test_demo.py @@ -11,11 +11,15 @@ import pytest from loguru import logger from pytest_html import extras # 往pytest-html报告中填写额外的内容 from common_utils.func_handle import add_docstring +import allure +from case_utils.allure_handle import allure_title, allure_step # 读取用例数据 -cases = [{"title": "demo cese_01", "user": "flora", "age": 17, "run": False}] +cases = [{"title": "demo case 01", "user": "flora1", "age": 17, "run": True}, + {"title": "demo case 02", "user": "lucy", "age": 17, "run": True}] +@allure.story("demo模块") @pytest.mark.test_login_demo @pytest.mark.parametrize("case", cases) def test_demo(case, extra): @@ -23,10 +27,14 @@ def test_demo(case, extra): logger.debug(f"当前执行的用例数据:{case}") # 给当前测试方法添加文档注释 add_docstring(case.get("title", ""))(test_demo) + # 添加用例标题作为allure中显示的用例标题 + allure_title(case.get("title", "")) if case.get("run", None): - assert case["user"] == "flora" # 将用例数据显示在pytest-html报告中 extra.append(extras.json(case, name="用例数据")) + # 在allure报告中显示请求的用例数据 + allure_step(step_title="用例数据", content=f"{case}") + assert case["user"] == "flora" else: reason = f"标记了该用例为false,不执行\\n" logger.warning(f"{reason}") diff --git a/test_case/test_manual_case/test_login_demo.py b/test_case/test_manual_case/test_login_demo.py index af76b86..9d628bc 100644 --- a/test_case/test_manual_case/test_login_demo.py +++ b/test_case/test_manual_case/test_login_demo.py @@ -9,21 +9,23 @@ import pytest import os -from common_utils.yaml_handle import HandleYaml +from common_utils.yaml_handle import YamlHandle from config.project_path import DATA_DIR -from common_utils.base_request import BaseRequest from case_utils.assert_handle import assert_response, assert_sql from loguru import logger -from case_utils.request_data_handle import RequestPreDataHandle, after_extract, case_data_replace, eval_data_process +from case_utils.request_data_handle import RequestPreDataHandle, RequestHandle from pytest_html import extras # 往pytest-html报告中填写额外的内容 from common_utils.func_handle import add_docstring +from case_utils.allure_handle import allure_title +import allure # 读取用例数据 -cases = HandleYaml(filename=os.path.join(DATA_DIR, "test_login_demo.yaml")).read_yaml +cases = YamlHandle(filename=os.path.join(DATA_DIR, "test_login_demo.yaml")).read_yaml +@allure.story(f'{cases["case_common"]["allure_story"]}') @pytest.mark.test_login_demo -@pytest.mark.parametrize("case", cases) +@pytest.mark.parametrize("case", cases.get("case_info")) def test_login_demo(case, extra, request): logger.info("-----------------------------START-开始执行用例-----------------------------") logger.debug(f"当前执行的用例数据:{case}") @@ -32,19 +34,17 @@ def test_login_demo(case, extra, request): env = request.config.getoption("--env") # 给当前测试方法添加文档注释 add_docstring(case.get("title", ""))(test_login_demo) + # 添加用例标题作为allure中显示的用例标题 + allure_title(case.get("title", "")) if case.get("run", None): # 处理请求前的用例数据 case_data = RequestPreDataHandle(case).request_data_handle() # 将用例数据显示在pytest-html报告中 extra.append(extras.text(str(case_data), name="用例数据")) # 发送请求 - response = BaseRequest.send_request(case_data) + response = RequestHandle(case_data).send_request_extract() # 将响应数据显示在pytest-html报告中 extra.append(extras.text(str(response.text), name="响应数据")) - # 请求后,提取后置参数作为全局变量 - after_extract(response, case_data["extract"]) - # 从全局变量中获取最新值,替换数据库断言中的参数 - case_data["assert_sql"] = eval_data_process(case_data_replace(case_data["assert_sql"])) # 进行响应断言 assert_response(response, case_data["assert_response"]) # 进行数据库断言