diff --git a/framework/sdk-parent/frontend/src/i18n/lang/track/en-US.js b/framework/sdk-parent/frontend/src/i18n/lang/track/en-US.js index f643ce3bba..e66edcb247 100644 --- a/framework/sdk-parent/frontend/src/i18n/lang/track/en-US.js +++ b/framework/sdk-parent/frontend/src/i18n/lang/track/en-US.js @@ -636,6 +636,7 @@ export default { passing_rate_tip: "Execute passed use cases/all use cases * 100%", content: "Content", report_summary: "Summary", + case_env: "Default environment(by cases)", analysis_functional: "Analysis Functional", analysis_api: "Analysis Api", analysis_ui: "Analysis Ui", diff --git a/framework/sdk-parent/frontend/src/i18n/lang/track/zh-CN.js b/framework/sdk-parent/frontend/src/i18n/lang/track/zh-CN.js index a1a69ebd45..27d62c3a48 100644 --- a/framework/sdk-parent/frontend/src/i18n/lang/track/zh-CN.js +++ b/framework/sdk-parent/frontend/src/i18n/lang/track/zh-CN.js @@ -603,6 +603,7 @@ export default { passing_rate_tip: "执行通过用例/所有用例 * 100%", content: "目录", report_summary: "报告总结", + case_env: "默认环境(用例保存的环境)", analysis_functional: "功能用例统计分析", analysis_api: "接口用例统计分析", analysis_ui: "UI 用例统计分析", diff --git a/framework/sdk-parent/frontend/src/i18n/lang/track/zh-TW.js b/framework/sdk-parent/frontend/src/i18n/lang/track/zh-TW.js index 8e738c8968..c685e2d03c 100644 --- a/framework/sdk-parent/frontend/src/i18n/lang/track/zh-TW.js +++ b/framework/sdk-parent/frontend/src/i18n/lang/track/zh-TW.js @@ -602,6 +602,7 @@ export default { passing_rate_tip: "執行通過用例/所有用例 * 100%", content: "目錄", report_summary: "報告總結", + case_env: "默認環境(用例保存的環境)", analysis_functional: "功能用例統計分析", analysis_api: "接口用例統計分析", analysis_ui: "UI 用例統計分析", diff --git a/framework/sdk-parent/frontend/src/utils/constants.js b/framework/sdk-parent/frontend/src/utils/constants.js index d1a7fe0717..3c87c6f7f3 100644 --- a/framework/sdk-parent/frontend/src/utils/constants.js +++ b/framework/sdk-parent/frontend/src/utils/constants.js @@ -51,169 +51,169 @@ export const GROUP_WORKSPACE = 'WORKSPACE'; export const GROUP_PROJECT = 'PROJECT'; export const GROUP_TYPE = { - SYSTEM: 'SYSTEM', - WORKSPACE: 'WORKSPACE', - PROJECT: 'PROJECT' + SYSTEM: 'SYSTEM', + WORKSPACE: 'WORKSPACE', + PROJECT: 'PROJECT' } export const SCHEDULE_TYPE = { - API_TEST: 'API_TEST', - PERFORMANCE_TEST: 'PERFORMANCE_TEST' + API_TEST: 'API_TEST', + PERFORMANCE_TEST: 'PERFORMANCE_TEST' } export const REQUEST_HEADERS = [ - {value: 'Accept'}, - {value: 'Accept-Charset'}, - {value: 'Accept-Language'}, - {value: 'Accept-Datetime'}, - {value: 'Authorization'}, - {value: 'Cache-Control'}, - {value: 'Connection'}, - {value: 'Cookie'}, - {value: 'Content-Length'}, - {value: 'Content-MD5'}, - {value: 'Content-Type'}, - {value: 'Date'}, - {value: 'Expect'}, - {value: 'From'}, - {value: 'Host'}, - {value: 'If-Match'}, - {value: 'If-Modified-Since'}, - {value: 'If-None-Match'}, - {value: 'If-Range'}, - {value: 'If-Unmodified-Since'}, - {value: 'Max-Forwards'}, - {value: 'Origin'}, - {value: 'Pragma'}, - {value: 'Proxy-Authorization'}, - {value: 'Range'}, - {value: 'Referer'}, - {value: 'TE'}, - {value: 'User-Agent'}, - {value: 'Upgrade'}, - {value: 'Via'}, - {value: 'Warning'} + {value: 'Accept'}, + {value: 'Accept-Charset'}, + {value: 'Accept-Language'}, + {value: 'Accept-Datetime'}, + {value: 'Authorization'}, + {value: 'Cache-Control'}, + {value: 'Connection'}, + {value: 'Cookie'}, + {value: 'Content-Length'}, + {value: 'Content-MD5'}, + {value: 'Content-Type'}, + {value: 'Date'}, + {value: 'Expect'}, + {value: 'From'}, + {value: 'Host'}, + {value: 'If-Match'}, + {value: 'If-Modified-Since'}, + {value: 'If-None-Match'}, + {value: 'If-Range'}, + {value: 'If-Unmodified-Since'}, + {value: 'Max-Forwards'}, + {value: 'Origin'}, + {value: 'Pragma'}, + {value: 'Proxy-Authorization'}, + {value: 'Range'}, + {value: 'Referer'}, + {value: 'TE'}, + {value: 'User-Agent'}, + {value: 'Upgrade'}, + {value: 'Via'}, + {value: 'Warning'} ] export const MOCKJS_FUNC = [ - {name: '@boolean', des: i18n.t('api_test.request.boolean'), ex: true}, - {name: '@natural', des: i18n.t('api_test.request.natural'), ex: 72834}, - {name: '@integer', des: i18n.t('api_test.request.integer'), ex: 79750}, - {name: '@float', des: i18n.t('api_test.request.float'), ex: 24.2}, - {name: '@character', des: i18n.t('api_test.request.character'), ex: "k"}, - {name: '@string', des: i18n.t('api_test.request.string'), ex: "hello"}, - {name: '@range', des: i18n.t('api_test.request.range'), ex: "org.mozilla.javascript.NavicatArray@1739f809"}, - {name: '@date', des: i18n.t('api_test.request.date'), ex: "1973-01-08"}, - {name: '@time', des: i18n.t('api_test.request.time'), ex: "06:15:27"}, - {name: '@datetime', des: i18n.t('api_test.request.datetime'), ex: "1975-10-12 02:32:04"}, - {name: '@now', des: i18n.t('api_test.request.now'), ex: (new Date()).toLocaleTimeString().toLocaleString()}, - {name: '@img', des: i18n.t('api_test.request.img'), ex: "http://dummyimage.com/120x60"}, - {name: '@color', des: i18n.t('api_test.request.color'), ex: "#b479f2"}, - {name: '@hex', des: i18n.t('api_test.request.hex'), ex: "#f27984"}, - {name: '@rgb', des: i18n.t('api_test.request.rgb'), ex: "rgb(203, 242, 121)"}, - {name: '@rgba', des: i18n.t('api_test.request.rgba'), ex: "rgba(242, 121, 238, 0.66)"}, - {name: '@hsl', des: i18n.t('api_test.request.hsl'), ex: "hsl(164, 82, 71)"}, - {name: '@paragraph', des: i18n.t('api_test.request.paragraph'), ex: "Iwvh qxuvn uigzjw xijvntv dfidxtof"}, - {name: '@sentence', des: i18n.t('api_test.request.sentence'), ex: "Hfi fpqnqerrs sghxldx oqpghvnmy"}, - {name: '@word', des: i18n.t('api_test.request.word'), ex: "shnjlyazvi"}, - {name: '@title', des: i18n.t('api_test.request.title'), ex: "Tefsdc Vhs Ujx"}, - {name: '@cparagraph', des: i18n.t('api_test.request.cparagraph'), ex: "色青元处才不米拉律消叫别金如上。"}, - {name: '@csentence', des: i18n.t('api_test.request.csentence'), ex: "与形府部速她运改织图集料进完。"}, - {name: '@cword', des: i18n.t('api_test.request.cword'), ex: "满"}, - {name: '@ctitle', des: i18n.t('api_test.request.ctitle'), ex: "运满前省快"}, - {name: '@first', des: i18n.t('api_test.request.first'), ex: "Mary"}, - {name: '@last', des: i18n.t('api_test.request.last'), ex: "Miller"}, - {name: '@name', des: i18n.t('api_test.request.name'), ex: "Robert Lee"}, - {name: '@cfirst', des: i18n.t('api_test.request.cfirst'), ex: "龚"}, - {name: '@clast', des: i18n.t('api_test.request.clast'), ex: "刚"}, - {name: '@cname', des: i18n.t('api_test.request.cname'), ex: "江娟"}, - {name: '@url', des: i18n.t('api_test.request.url'), ex: "wais://jopnwwj.bh/lqnhn"}, - {name: '@domain', des: i18n.t('api_test.request.domain'), ex: "rsh.bt"}, - {name: '@protocol', des: i18n.t('api_test.request.protocol'), ex: "rlogin"}, - {name: '@tld', des: i18n.t('api_test.request.tld'), ex: "sa"}, - {name: '@email', des: i18n.t('api_test.request.email'), ex: "d.somdg@edntlm.cd"}, - {name: '@ip', des: i18n.t('api_test.request.ip'), ex: "22.151.93.255"}, - {name: '@region', des: i18n.t('api_test.request.region'), ex: "东北"}, - {name: '@province', des: i18n.t('api_test.request.province'), ex: "陕西省"}, - {name: '@city', des: i18n.t('api_test.request.city'), ex: "珠海市"}, - {name: '@county', des: i18n.t('api_test.request.county'), ex: "正宁县"}, - {name: '@zip', des: i18n.t('api_test.request.zip'), ex: 873247}, - {name: '@capitalize', des: i18n.t('api_test.request.capitalize'), ex: "Undefined"}, - {name: '@upper', des: i18n.t('api_test.request.upper'), ex: "UNDEFINED"}, - {name: '@lower', des: i18n.t('api_test.request.lower'), ex: "undefined"}, - {name: '@pick', des: i18n.t('api_test.request.pick'), ex: "None example"}, - {name: '@shuffle', des: i18n.t('api_test.request.shuffle'), ex: "org.mozilla.javascript.NavicatArray@2264545d"}, - {name: '@guid', des: i18n.t('api_test.request.guid'), ex: "4f9CeC2c-8d59-40f6-ec4F-2Abbc5C94Ddf"}, - {name: '@id', des: i18n.t('api_test.request.id'), ex: "450000197511051762"}, - {name: '@increment', des: i18n.t('api_test.request.increment'), ex: 1} + {name: '@boolean', des: i18n.t('api_test.request.boolean'), ex: true}, + {name: '@natural', des: i18n.t('api_test.request.natural'), ex: 72834}, + {name: '@integer', des: i18n.t('api_test.request.integer'), ex: 79750}, + {name: '@float', des: i18n.t('api_test.request.float'), ex: 24.2}, + {name: '@character', des: i18n.t('api_test.request.character'), ex: "k"}, + {name: '@string', des: i18n.t('api_test.request.string'), ex: "hello"}, + {name: '@range', des: i18n.t('api_test.request.range'), ex: "org.mozilla.javascript.NavicatArray@1739f809"}, + {name: '@date', des: i18n.t('api_test.request.date'), ex: "1973-01-08"}, + {name: '@time', des: i18n.t('api_test.request.time'), ex: "06:15:27"}, + {name: '@datetime', des: i18n.t('api_test.request.datetime'), ex: "1975-10-12 02:32:04"}, + {name: '@now', des: i18n.t('api_test.request.now'), ex: (new Date()).toLocaleTimeString().toLocaleString()}, + {name: '@img', des: i18n.t('api_test.request.img'), ex: "http://dummyimage.com/120x60"}, + {name: '@color', des: i18n.t('api_test.request.color'), ex: "#b479f2"}, + {name: '@hex', des: i18n.t('api_test.request.hex'), ex: "#f27984"}, + {name: '@rgb', des: i18n.t('api_test.request.rgb'), ex: "rgb(203, 242, 121)"}, + {name: '@rgba', des: i18n.t('api_test.request.rgba'), ex: "rgba(242, 121, 238, 0.66)"}, + {name: '@hsl', des: i18n.t('api_test.request.hsl'), ex: "hsl(164, 82, 71)"}, + {name: '@paragraph', des: i18n.t('api_test.request.paragraph'), ex: "Iwvh qxuvn uigzjw xijvntv dfidxtof"}, + {name: '@sentence', des: i18n.t('api_test.request.sentence'), ex: "Hfi fpqnqerrs sghxldx oqpghvnmy"}, + {name: '@word', des: i18n.t('api_test.request.word'), ex: "shnjlyazvi"}, + {name: '@title', des: i18n.t('api_test.request.title'), ex: "Tefsdc Vhs Ujx"}, + {name: '@cparagraph', des: i18n.t('api_test.request.cparagraph'), ex: "色青元处才不米拉律消叫别金如上。"}, + {name: '@csentence', des: i18n.t('api_test.request.csentence'), ex: "与形府部速她运改织图集料进完。"}, + {name: '@cword', des: i18n.t('api_test.request.cword'), ex: "满"}, + {name: '@ctitle', des: i18n.t('api_test.request.ctitle'), ex: "运满前省快"}, + {name: '@first', des: i18n.t('api_test.request.first'), ex: "Mary"}, + {name: '@last', des: i18n.t('api_test.request.last'), ex: "Miller"}, + {name: '@name', des: i18n.t('api_test.request.name'), ex: "Robert Lee"}, + {name: '@cfirst', des: i18n.t('api_test.request.cfirst'), ex: "龚"}, + {name: '@clast', des: i18n.t('api_test.request.clast'), ex: "刚"}, + {name: '@cname', des: i18n.t('api_test.request.cname'), ex: "江娟"}, + {name: '@url', des: i18n.t('api_test.request.url'), ex: "wais://jopnwwj.bh/lqnhn"}, + {name: '@domain', des: i18n.t('api_test.request.domain'), ex: "rsh.bt"}, + {name: '@protocol', des: i18n.t('api_test.request.protocol'), ex: "rlogin"}, + {name: '@tld', des: i18n.t('api_test.request.tld'), ex: "sa"}, + {name: '@email', des: i18n.t('api_test.request.email'), ex: "d.somdg@edntlm.cd"}, + {name: '@ip', des: i18n.t('api_test.request.ip'), ex: "22.151.93.255"}, + {name: '@region', des: i18n.t('api_test.request.region'), ex: "东北"}, + {name: '@province', des: i18n.t('api_test.request.province'), ex: "陕西省"}, + {name: '@city', des: i18n.t('api_test.request.city'), ex: "珠海市"}, + {name: '@county', des: i18n.t('api_test.request.county'), ex: "正宁县"}, + {name: '@zip', des: i18n.t('api_test.request.zip'), ex: 873247}, + {name: '@capitalize', des: i18n.t('api_test.request.capitalize'), ex: "Undefined"}, + {name: '@upper', des: i18n.t('api_test.request.upper'), ex: "UNDEFINED"}, + {name: '@lower', des: i18n.t('api_test.request.lower'), ex: "undefined"}, + {name: '@pick', des: i18n.t('api_test.request.pick'), ex: "None example"}, + {name: '@shuffle', des: i18n.t('api_test.request.shuffle'), ex: "org.mozilla.javascript.NavicatArray@2264545d"}, + {name: '@guid', des: i18n.t('api_test.request.guid'), ex: "4f9CeC2c-8d59-40f6-ec4F-2Abbc5C94Ddf"}, + {name: '@id', des: i18n.t('api_test.request.id'), ex: "450000197511051762"}, + {name: '@increment', des: i18n.t('api_test.request.increment'), ex: 1} ] export const JMETER_FUNC = [ - {type: "Information", name: "${__threadNum}", description: "get thread number"}, - {type: "Information", name: "${__threadGroupName}", description: "get thread group name"}, - {type: "Information", name: "${__samplerName}", description: "get the sampler name (label)"}, - {type: "Information", name: "${__machineIP}", description: "get the local machine IP address"}, - {type: "Information", name: "${__machineName}", description: "get the local machine name"}, - {type: "Information", name: "${__time}", description: "return current time in various formats"}, - { - type: "Information", - name: "${__timeShift}", - description: "return a date in various formats with the specified amount of seconds/minutes/hours/days added" - }, - {type: "Information", name: "${__log}", description: "log (or display) a message (and return the value)"}, - {type: "Information", name: "${__logn}", description: "log (or display) a message (empty return value)"}, - {type: "Input", name: "${__StringFromFile}", description: "read a line from a file"}, - {type: "Input", name: "${__FileToString}", description: "read an entire file"}, - {type: "Input", name: "${__CSVRead}", description: "read from CSV delimited file"}, - {type: "Input", name: "${__XPath}", description: "Use an XPath expression to read from a file"}, - {type: "Input", name: "${__StringToFile}", description: "write a string to a file"}, - {type: "Calculation", name: "${__counter}", description: "generate an incrementing number"}, - { - type: "Formatting", - name: "${__dateTimeConvert}", - description: "Convert a date or time from source to target format" - }, - {type: "Calculation", name: "${__digest}", description: "Generate a digest (SHA-1, SHA-256, MD5...)"}, - {type: "Calculation", name: "${__intSum}", description: "add int numbers"}, - {type: "Calculation", name: "${__longSum}", description: "add long numbers"}, - {type: "Calculation", name: "${__Random}", description: "generate a random number"}, - {type: "Calculation", name: "${__RandomDate}", description: "generate random date within a specific date range"}, - { - type: "Calculation", - name: "${__RandomFromMultipleVars}", - description: "extracts an element from the values of a set of variables separated by |" - }, - {type: "Calculation", name: "${__RandomString}", description: "generate a random string"}, - {type: "Calculation", name: "${__UUID}", description: "generate a random type 4 UUID"}, - {type: "Scripting", name: "${__groovy}", description: "run an Apache Groovy script"}, - {type: "Scripting", name: "${__BeanShell}", description: "run a BeanShell script"}, - {type: "Scripting", name: "${__javaScript}", description: "process JavaScript (Nashorn)"}, - {type: "Scripting", name: "${__jexl2}", description: "evaluate a Commons Jexl2 expression"}, - {type: "Scripting", name: "${__jexl3}", description: "evaluate a Commons Jexl3 expression"}, - {type: "Properties", name: "${__isPropDefined}", description: "Test if a property exists"}, - {type: "Properties", name: "${__property}", description: "read a property"}, - {type: "Properties", name: "${__P}", description: "read a property (shorthand method)"}, - {type: "Properties", name: "${__setProperty}", description: "set a JMeter property"}, - {type: "Variables", name: "${__split}", description: "Split a string into variables"}, - {type: "Variables", name: "${__eval}", description: "evaluate a variable expression"}, - {type: "Variables", name: "${__evalVar}", description: "evaluate an expression stored in a variable"}, - {type: "Properties", name: "${__isVarDefined}", description: "Test if a variable exists"}, - {type: "Variables", name: "${__V}", description: "evaluate a variable name"}, - {type: "String", name: "${__char}", description: "generate Unicode char values from a list of numbers"}, - {type: "String", name: "${__changeCase}", description: "Change case following different modes"}, - {type: "String", name: "${__escapeHtml}", description: "Encode strings using HTML encoding"}, - {type: "String", name: "${__escapeOroRegexpChars}", description: "quote meta chars used by ORO regular expression"}, - {type: "String", name: "${__escapeXml}", description: "Encode strings using XMl encoding"}, - {type: "String", name: "${__regexFunction}", description: "parse previous response using a regular expression"}, - {type: "String", name: "${__unescape}", description: "Process strings containing Java escapes (e.g. \n & \t)"}, - {type: "String", name: "${__unescapeHtml}", description: "Decode HTML-encoded strings"}, - {type: "String", name: "${__urldecode}", description: "Decode a application/x-www-form-urlencoded string"}, - { - type: "String", - name: "${__urlencode}", - description: "Encode a string to a application/x-www-form-urlencoded string" - }, - {type: "String", name: "${__TestPlanName}", description: "Return name of current test plan"}, + {type: "Information", name: "${__threadNum}", description: "get thread number"}, + {type: "Information", name: "${__threadGroupName}", description: "get thread group name"}, + {type: "Information", name: "${__samplerName}", description: "get the sampler name (label)"}, + {type: "Information", name: "${__machineIP}", description: "get the local machine IP address"}, + {type: "Information", name: "${__machineName}", description: "get the local machine name"}, + {type: "Information", name: "${__time}", description: "return current time in various formats"}, + { + type: "Information", + name: "${__timeShift}", + description: "return a date in various formats with the specified amount of seconds/minutes/hours/days added" + }, + {type: "Information", name: "${__log}", description: "log (or display) a message (and return the value)"}, + {type: "Information", name: "${__logn}", description: "log (or display) a message (empty return value)"}, + {type: "Input", name: "${__StringFromFile}", description: "read a line from a file"}, + {type: "Input", name: "${__FileToString}", description: "read an entire file"}, + {type: "Input", name: "${__CSVRead}", description: "read from CSV delimited file"}, + {type: "Input", name: "${__XPath}", description: "Use an XPath expression to read from a file"}, + {type: "Input", name: "${__StringToFile}", description: "write a string to a file"}, + {type: "Calculation", name: "${__counter}", description: "generate an incrementing number"}, + { + type: "Formatting", + name: "${__dateTimeConvert}", + description: "Convert a date or time from source to target format" + }, + {type: "Calculation", name: "${__digest}", description: "Generate a digest (SHA-1, SHA-256, MD5...)"}, + {type: "Calculation", name: "${__intSum}", description: "add int numbers"}, + {type: "Calculation", name: "${__longSum}", description: "add long numbers"}, + {type: "Calculation", name: "${__Random}", description: "generate a random number"}, + {type: "Calculation", name: "${__RandomDate}", description: "generate random date within a specific date range"}, + { + type: "Calculation", + name: "${__RandomFromMultipleVars}", + description: "extracts an element from the values of a set of variables separated by |" + }, + {type: "Calculation", name: "${__RandomString}", description: "generate a random string"}, + {type: "Calculation", name: "${__UUID}", description: "generate a random type 4 UUID"}, + {type: "Scripting", name: "${__groovy}", description: "run an Apache Groovy script"}, + {type: "Scripting", name: "${__BeanShell}", description: "run a BeanShell script"}, + {type: "Scripting", name: "${__javaScript}", description: "process JavaScript (Nashorn)"}, + {type: "Scripting", name: "${__jexl2}", description: "evaluate a Commons Jexl2 expression"}, + {type: "Scripting", name: "${__jexl3}", description: "evaluate a Commons Jexl3 expression"}, + {type: "Properties", name: "${__isPropDefined}", description: "Test if a property exists"}, + {type: "Properties", name: "${__property}", description: "read a property"}, + {type: "Properties", name: "${__P}", description: "read a property (shorthand method)"}, + {type: "Properties", name: "${__setProperty}", description: "set a JMeter property"}, + {type: "Variables", name: "${__split}", description: "Split a string into variables"}, + {type: "Variables", name: "${__eval}", description: "evaluate a variable expression"}, + {type: "Variables", name: "${__evalVar}", description: "evaluate an expression stored in a variable"}, + {type: "Properties", name: "${__isVarDefined}", description: "Test if a variable exists"}, + {type: "Variables", name: "${__V}", description: "evaluate a variable name"}, + {type: "String", name: "${__char}", description: "generate Unicode char values from a list of numbers"}, + {type: "String", name: "${__changeCase}", description: "Change case following different modes"}, + {type: "String", name: "${__escapeHtml}", description: "Encode strings using HTML encoding"}, + {type: "String", name: "${__escapeOroRegexpChars}", description: "quote meta chars used by ORO regular expression"}, + {type: "String", name: "${__escapeXml}", description: "Encode strings using XMl encoding"}, + {type: "String", name: "${__regexFunction}", description: "parse previous response using a regular expression"}, + {type: "String", name: "${__unescape}", description: "Process strings containing Java escapes (e.g. \n & \t)"}, + {type: "String", name: "${__unescapeHtml}", description: "Decode HTML-encoded strings"}, + {type: "String", name: "${__urldecode}", description: "Decode a application/x-www-form-urlencoded string"}, + { + type: "String", + name: "${__urlencode}", + description: "Encode a string to a application/x-www-form-urlencoded string" + }, + {type: "String", name: "${__TestPlanName}", description: "Return name of current test plan"}, ] export const ORIGIN_COLOR = '#783887'; @@ -223,341 +223,340 @@ export const COUNT_NUMBER_SHALLOW = '#CDB9D2'; export const PRIMARY_COLOR = '#783887'; export const CONFIG_TYPE = { - NOT: "NOT", - NORMAL: "NORMAL", - ABNORMAL: "ABNORMAL" + NOT: "NOT", + NORMAL: "NORMAL", + ABNORMAL: "ABNORMAL" } export const WORKSTATION = { - UPCOMING: "upcoming", - FOCUS: "focus", - NODE: "node" + UPCOMING: "upcoming", + FOCUS: "focus", + NODE: "node" } export const ENV_TYPE = { - DEFAULT: "DEFAULT", - JSON: "JSON", - GROUP: "GROUP" + JSON: "JSON", + GROUP: "GROUP" } export const DEFAULT_XSS_ATTR = ['style', 'class']; export const SECOND_LEVEL_ROUTE_PERMISSION_MAP = { - API: [ - {router: '/api/home', permission: ['PROJECT_API_HOME:READ']}, - {router: '/api/definition', permission: ['PROJECT_API_DEFINITION:READ']}, - {router: '/api/automation', permission: ['PROJECT_API_SCENARIO:READ']}, - {router: '/api/automation/report', permission: ['PROJECT_API_REPORT:READ']}, - ], - TRACK: [ - {router: '/track/home', permission: ['PROJECT_TRACK_HOME:READ']}, - {router: '/track/case/all', permission: ['PROJECT_TRACK_CASE:READ']}, - {router: '/track/review/all', permission: ['PROJECT_TRACK_REVIEW:READ']}, - {router: '/track/plan/all', permission: ['PROJECT_TRACK_PLAN:READ']}, - {router: '/track/issue', permission: ['PROJECT_TRACK_ISSUE:READ']}, - {router: '/track/testPlan/reportList', permission: ['PROJECT_TRACK_REPORT:READ']}, - ], - LOAD: [ - {router: '/performance/home', permission: ['PROJECT_PERFORMANCE_HOME:READ']}, - {router: '/performance/test/all', permission: ['PROJECT_PERFORMANCE_TEST:READ']}, - {router: '/performance/report/all', permission: ['PROJECT_PERFORMANCE_REPORT:READ']}, - ], - UI: [ - {router: '/ui/automation', permission: ['PROJECT_UI_SCENARIO:READ']}, - {router: '/ui/element', permission: ['PROJECT_UI_ELEMENT:READ']}, - {router: '/ui/report', permission: ['PROJECT_UI_REPORT:READ']}, - ], - REPORT: [ - {router: '/report/projectStatistics', permission: ['PROJECT_REPORT_ANALYSIS:READ']}, - { - router: '/report/projectReport', - permission: [ - 'PROJECT_ENTERPRISE_REPORT:READ+EXPORT', 'PROJECT_ENTERPRISE_REPORT:READ+CREATE', - 'PROJECT_ENTERPRISE_REPORT:READ+DELETE', 'PROJECT_ENTERPRISE_REPORT:READ+COPY', - 'PROJECT_ENTERPRISE_REPORT:READ+SCHEDULE', 'PROJECT_ENTERPRISE_REPORT:READ+EDIT' - ] - } - ] + API: [ + {router: '/api/home', permission: ['PROJECT_API_HOME:READ']}, + {router: '/api/definition', permission: ['PROJECT_API_DEFINITION:READ']}, + {router: '/api/automation', permission: ['PROJECT_API_SCENARIO:READ']}, + {router: '/api/automation/report', permission: ['PROJECT_API_REPORT:READ']}, + ], + TRACK: [ + {router: '/track/home', permission: ['PROJECT_TRACK_HOME:READ']}, + {router: '/track/case/all', permission: ['PROJECT_TRACK_CASE:READ']}, + {router: '/track/review/all', permission: ['PROJECT_TRACK_REVIEW:READ']}, + {router: '/track/plan/all', permission: ['PROJECT_TRACK_PLAN:READ']}, + {router: '/track/issue', permission: ['PROJECT_TRACK_ISSUE:READ']}, + {router: '/track/testPlan/reportList', permission: ['PROJECT_TRACK_REPORT:READ']}, + ], + LOAD: [ + {router: '/performance/home', permission: ['PROJECT_PERFORMANCE_HOME:READ']}, + {router: '/performance/test/all', permission: ['PROJECT_PERFORMANCE_TEST:READ']}, + {router: '/performance/report/all', permission: ['PROJECT_PERFORMANCE_REPORT:READ']}, + ], + UI: [ + {router: '/ui/automation', permission: ['PROJECT_UI_SCENARIO:READ']}, + {router: '/ui/element', permission: ['PROJECT_UI_ELEMENT:READ']}, + {router: '/ui/report', permission: ['PROJECT_UI_REPORT:READ']}, + ], + REPORT: [ + {router: '/report/projectStatistics', permission: ['PROJECT_REPORT_ANALYSIS:READ']}, + { + router: '/report/projectReport', + permission: [ + 'PROJECT_ENTERPRISE_REPORT:READ+EXPORT', 'PROJECT_ENTERPRISE_REPORT:READ+CREATE', + 'PROJECT_ENTERPRISE_REPORT:READ+DELETE', 'PROJECT_ENTERPRISE_REPORT:READ+COPY', + 'PROJECT_ENTERPRISE_REPORT:READ+SCHEDULE', 'PROJECT_ENTERPRISE_REPORT:READ+EDIT' + ] + } + ] } export const TASK_PATH = [ - "/test/case/add", - "/test/case/review/save", - "/test/case/comment/save", - "/test/plan/add", - "/test/plan/relevance", - "issues/add", - "test/case/issues/relate", - "/api/definition/create", - "/api/definition/run/debug", - "/api/testcase/create", - "/share/generate/api/document", - "/api/definition/import", - "/api/automation/create", - "/api/automation/schedule/create", - "/performance/save", - "/share/generate/expired", - "/project/add", - "/project/member/add", - "/setting/user/project/member/add", - "/environment/add", - "/ui/element/add", - "/ui/automation/create", - "/ui/automation/run/debug", + "/test/case/add", + "/test/case/review/save", + "/test/case/comment/save", + "/test/plan/add", + "/test/plan/relevance", + "issues/add", + "test/case/issues/relate", + "/api/definition/create", + "/api/definition/run/debug", + "/api/testcase/create", + "/share/generate/api/document", + "/api/definition/import", + "/api/automation/create", + "/api/automation/schedule/create", + "/performance/save", + "/share/generate/expired", + "/project/add", + "/project/member/add", + "/setting/user/project/member/add", + "/environment/add", + "/ui/element/add", + "/ui/automation/create", + "/ui/automation/run/debug", ]; export const TASK_DATA = [ - { + { + id: 1, + name: "track", + title: "side_task.test_tracking.title", + percentage: 14, + permission: ['PROJECT_MANAGER:READ', 'WORKSPACE_PROJECT_MANAGER:READ', 'PROJECT_TRACK_CASE:READ+CREATE', 'PROJECT_TRACK_REVIEW:READ+CREATE', 'PROJECT_TRACK_REVIEW:READ+COMMENT', 'PROJECT_TRACK_PLAN:READ+CREATE', 'PROJECT_TRACK_PLAN:READ+RELEVANCE_OR_CANCEL', 'PROJECT_TRACK_ISSUE:READ+CREATE', 'PROJECT_TRACK_CASE:READ+BATCH_ADD_PUBLIC'], + taskData: [ + { id: 1, - name: "track", - title: "side_task.test_tracking.title", - percentage: 14, - permission: ['PROJECT_MANAGER:READ', 'WORKSPACE_PROJECT_MANAGER:READ', 'PROJECT_TRACK_CASE:READ+CREATE', 'PROJECT_TRACK_REVIEW:READ+CREATE', 'PROJECT_TRACK_REVIEW:READ+COMMENT', 'PROJECT_TRACK_PLAN:READ+CREATE', 'PROJECT_TRACK_PLAN:READ+RELEVANCE_OR_CANCEL', 'PROJECT_TRACK_ISSUE:READ+CREATE', 'PROJECT_TRACK_CASE:READ+BATCH_ADD_PUBLIC'], - taskData: [ - { - id: 1, - name: "side_task.test_tracking.task_1", - status: 1, - permission: ['PROJECT_MANAGER:READ', 'WORKSPACE_PROJECT_MANAGER:READ'], - api: [''], - path: '/setting/project/:type', - url: "" - }, - { - id: 2, - name: "side_task.test_tracking.task_2", - status: 0, - permission: ['PROJECT_TRACK_CASE:READ+CREATE'], - api: ["/test/case/add"], - path: '/track/case/all', - url: "/assets/guide/track/task-2.gif" - }, - { - id: 3, - name: "side_task.test_tracking.task_3", - status: 0, - permission: ['PROJECT_TRACK_REVIEW:READ+CREATE'], - api: ["/test/case/review/save"], - path: '/track/review/all', - url: "/assets/guide/track/task-3.gif" - }, - { - id: 4, - name: "side_task.test_tracking.task_4", - status: 0, - permission: ['PROJECT_TRACK_REVIEW:READ+COMMENT'], - api: ["/test/case/comment/save"], - path: '/track/review/all', - url: "/assets/guide/track/task-4.gif" - }, - { - id: 5, - name: "side_task.test_tracking.task_5", - status: 0, - permission: ['PROJECT_TRACK_PLAN:READ+CREATE'], - api: ["/test/plan/add"], - path: '/track/plan/all', - url: "/assets/guide/track/task-5.gif" - }, - { - id: 6, - name: "side_task.test_tracking.task_6", - status: 0, - permission: ['PROJECT_TRACK_PLAN:READ+RELEVANCE_OR_CANCEL'], - api: ["/test/plan/relevance"], - path: '/track/plan/all', - url: "/assets/guide/track/task-6.gif" - }, - { - id: 7, - name: "side_task.test_tracking.task_7", - status: 0, - permission: ['PROJECT_TRACK_ISSUE:READ+CREATE', 'PROJECT_TRACK_CASE:READ+BATCH_ADD_PUBLIC'], - api: ["issues/add", "test/case/issues/relate"], - path: '/track/issue', - url: "/assets/guide/track/task-7.gif" - }, - ], - rate: 1, - status: 0 - }, - { + name: "side_task.test_tracking.task_1", + status: 1, + permission: ['PROJECT_MANAGER:READ', 'WORKSPACE_PROJECT_MANAGER:READ'], + api: [''], + path: '/setting/project/:type', + url: "" + }, + { id: 2, - name: "api", - title: 'side_task.api_test.title', - percentage: 0, - permission: ['PROJECT_API_DEFINITION:READ+CREATE_API', 'PROJECT_API_DEFINITION:READ+IMPORT_API', 'PROJECT_API_DEFINITION:READ+DEBUG', 'PROJECT_API_DEFINITION:READ+CREATE_CASE', 'PROJECT_API_DEFINITION:READ', 'PROJECT_API_SCENARIO:READ+CREATE', 'PROJECT_API_SCENARIO:READ+SCHEDULE'], - taskData: [ - { - id: 1, - name: "side_task.api_test.task_1", - status: 0, - path: '/api/definition', - permission: ['PROJECT_API_DEFINITION:READ+CREATE_API'], - api: ["/api/definition/create"], - url: "/assets/guide/api/task-1.gif" - }, - { - id: 2, - name: "side_task.api_test.task_2", - status: 0, - path: '/api/definition', - permission: ['PROJECT_API_DEFINITION:READ+IMPORT_API'], - api: ["/api/definition/import"], - url: "/assets/guide/api/task-2.gif" - }, - { - id: 3, - name: "side_task.api_test.task_3", - status: 0, - path: '/api/definition', - permission: ['PROJECT_API_DEFINITION:READ+DEBUG'], - api: ["/api/definition/run/debug"], - url: "/assets/guide/api/task-3.gif" - }, - { - id: 4, - name: "side_task.api_test.task_4", - status: 0, - path: '/api/definition', - permission: ['PROJECT_API_DEFINITION:READ+CREATE_CASE'], - api: ["/api/testcase/create"], - url: "/assets/guide/api/task-4.gif" - }, - { - id: 5, - name: "side_task.api_test.task_5", - status: 0, - path: '/api/definition', - permission: ['PROJECT_API_DEFINITION:READ'], - api: ["/share/generate/api/document"], - url: "/assets/guide/api/task-5.gif" - }, - { - id: 6, - name: "side_task.api_test.task_6", - status: 0, - path: '/api/automation', - permission: ['PROJECT_API_SCENARIO:READ+CREATE'], - api: ["/api/automation/create"], - url: "/assets/guide/api/task-6.gif" - }, - { - id: 7, - name: "side_task.api_test.task_7", - status: 0, - path: '/api/automation', - permission: ['PROJECT_API_SCENARIO:READ+SCHEDULE'], - api: ["/api/automation/schedule/create"], - url: "/assets/guide/api/task-7.gif" - }, - ], - rate: 0, - status: 0 - }, - { + name: "side_task.test_tracking.task_2", + status: 0, + permission: ['PROJECT_TRACK_CASE:READ+CREATE'], + api: ["/test/case/add"], + path: '/track/case/all', + url: "/assets/guide/track/task-2.gif" + }, + { id: 3, - name: "performance", - title: 'side_task.performance_test.title', - percentage: 0, - permission: ['PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE', "PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE_BATCH", 'PROJECT_PERFORMANCE_REPORT:READ'], - taskData: [ - { - id: 1, - name: 'side_task.performance_test.task_1', - status: 0, - path: '/performance/test/all', - permission: ['PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE', "PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE_BATCH"], - api: ["/performance/save"], - url: "/assets/guide/performance/task-1.gif" - }, - { - id: 2, - name: 'side_task.performance_test.task_2', - status: 0, - path: '/performance/report/all', - permission: ['PROJECT_PERFORMANCE_REPORT:READ'], - api: ["/share/generate/expired"], - url: "/assets/guide/performance/task-2.gif" - }, - ], - rate: 0, - status: 0 - }, - { + name: "side_task.test_tracking.task_3", + status: 0, + permission: ['PROJECT_TRACK_REVIEW:READ+CREATE'], + api: ["/test/case/review/save"], + path: '/track/review/all', + url: "/assets/guide/track/task-3.gif" + }, + { id: 4, - name: "project", - title: 'side_task.project_setting.title', - percentage: 0, - permission: ['WORKSPACE_PROJECT_MANAGER:READ+CREATE', 'PROJECT_USER:READ+CREATE', 'PROJECT_ENVIRONMENT:READ+CREATE'], - taskData: [ - { - id: 1, - name: 'side_task.project_setting.task_1', - status: 0, - permission: ['WORKSPACE_PROJECT_MANAGER:READ+CREATE'], - api: ["/project/add"], - path: '/setting/project/:type', - url: "/assets/guide/project/task-1.gif" - }, - { - id: 2, - name: 'side_task.project_setting.task_2', - status: 0, - permission: ['PROJECT_USER:READ+CREATE'], - api: ["/project/member/add", "/setting/user/project/member/add"], - path: '/project/member', - url: "/assets/guide/project/task-2.gif" - }, - { - id: 3, - name: 'side_task.project_setting.task_3', - status: 0, - permission: ['PROJECT_ENVIRONMENT:READ+CREATE'], - api: ["/environment/add"], - path: '/project/env', - url: "/assets/guide/project/task-3.gif" - }, - ], - rate: 0, - status: 0 - }, - { + name: "side_task.test_tracking.task_4", + status: 0, + permission: ['PROJECT_TRACK_REVIEW:READ+COMMENT'], + api: ["/test/case/comment/save"], + path: '/track/review/all', + url: "/assets/guide/track/task-4.gif" + }, + { id: 5, - name: "ui", - title: 'side_task.ui_test.title', - percentage: 0, - permission: ['PROJECT_UI_ELEMENT:READ+CREATE', 'PROJECT_UI_SCENARIO:READ+CREATE', 'PROJECT_UI_SCENARIO:READ+RUN', 'PROJECT_UI_SCENARIO:READ+DEBUG'], - taskData: [ - { - id: 1, - name: 'side_task.ui_test.task_1', - status: 0, - permission: ['PROJECT_UI_ELEMENT:READ+CREATE'], - api: ["/ui/element/add"], - path: '/ui/element', - url: "/assets/guide/ui/task-1.gif" - }, - { - id: 2, - name: 'side_task.ui_test.task_2', - status: 0, - permission: ['PROJECT_UI_SCENARIO:READ+CREATE'], - api: ["/ui/automation/create"], - path: '/ui/automation', - url: "/assets/guide/ui/task-2.gif" - }, - { - id: 2, - name: 'side_task.ui_test.task_3', - status: 0, - permission: ['PROJECT_UI_SCENARIO:READ+RUN', 'PROJECT_UI_SCENARIO:READ+DEBUG'], - api: ["/ui/automation/run/debug"], - path: '/ui/automation', - url: "/assets/guide/ui/task-3.gif" - }, - ], - rate: 0, - status: 0 - }, + name: "side_task.test_tracking.task_5", + status: 0, + permission: ['PROJECT_TRACK_PLAN:READ+CREATE'], + api: ["/test/plan/add"], + path: '/track/plan/all', + url: "/assets/guide/track/task-5.gif" + }, + { + id: 6, + name: "side_task.test_tracking.task_6", + status: 0, + permission: ['PROJECT_TRACK_PLAN:READ+RELEVANCE_OR_CANCEL'], + api: ["/test/plan/relevance"], + path: '/track/plan/all', + url: "/assets/guide/track/task-6.gif" + }, + { + id: 7, + name: "side_task.test_tracking.task_7", + status: 0, + permission: ['PROJECT_TRACK_ISSUE:READ+CREATE', 'PROJECT_TRACK_CASE:READ+BATCH_ADD_PUBLIC'], + api: ["issues/add", "test/case/issues/relate"], + path: '/track/issue', + url: "/assets/guide/track/task-7.gif" + }, + ], + rate: 1, + status: 0 + }, + { + id: 2, + name: "api", + title: 'side_task.api_test.title', + percentage: 0, + permission: ['PROJECT_API_DEFINITION:READ+CREATE_API', 'PROJECT_API_DEFINITION:READ+IMPORT_API', 'PROJECT_API_DEFINITION:READ+DEBUG', 'PROJECT_API_DEFINITION:READ+CREATE_CASE', 'PROJECT_API_DEFINITION:READ', 'PROJECT_API_SCENARIO:READ+CREATE', 'PROJECT_API_SCENARIO:READ+SCHEDULE'], + taskData: [ + { + id: 1, + name: "side_task.api_test.task_1", + status: 0, + path: '/api/definition', + permission: ['PROJECT_API_DEFINITION:READ+CREATE_API'], + api: ["/api/definition/create"], + url: "/assets/guide/api/task-1.gif" + }, + { + id: 2, + name: "side_task.api_test.task_2", + status: 0, + path: '/api/definition', + permission: ['PROJECT_API_DEFINITION:READ+IMPORT_API'], + api: ["/api/definition/import"], + url: "/assets/guide/api/task-2.gif" + }, + { + id: 3, + name: "side_task.api_test.task_3", + status: 0, + path: '/api/definition', + permission: ['PROJECT_API_DEFINITION:READ+DEBUG'], + api: ["/api/definition/run/debug"], + url: "/assets/guide/api/task-3.gif" + }, + { + id: 4, + name: "side_task.api_test.task_4", + status: 0, + path: '/api/definition', + permission: ['PROJECT_API_DEFINITION:READ+CREATE_CASE'], + api: ["/api/testcase/create"], + url: "/assets/guide/api/task-4.gif" + }, + { + id: 5, + name: "side_task.api_test.task_5", + status: 0, + path: '/api/definition', + permission: ['PROJECT_API_DEFINITION:READ'], + api: ["/share/generate/api/document"], + url: "/assets/guide/api/task-5.gif" + }, + { + id: 6, + name: "side_task.api_test.task_6", + status: 0, + path: '/api/automation', + permission: ['PROJECT_API_SCENARIO:READ+CREATE'], + api: ["/api/automation/create"], + url: "/assets/guide/api/task-6.gif" + }, + { + id: 7, + name: "side_task.api_test.task_7", + status: 0, + path: '/api/automation', + permission: ['PROJECT_API_SCENARIO:READ+SCHEDULE'], + api: ["/api/automation/schedule/create"], + url: "/assets/guide/api/task-7.gif" + }, + ], + rate: 0, + status: 0 + }, + { + id: 3, + name: "performance", + title: 'side_task.performance_test.title', + percentage: 0, + permission: ['PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE', "PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE_BATCH", 'PROJECT_PERFORMANCE_REPORT:READ'], + taskData: [ + { + id: 1, + name: 'side_task.performance_test.task_1', + status: 0, + path: '/performance/test/all', + permission: ['PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE', "PROJECT_API_SCENARIO:READ+CREATE_PERFORMANCE_BATCH"], + api: ["/performance/save"], + url: "/assets/guide/performance/task-1.gif" + }, + { + id: 2, + name: 'side_task.performance_test.task_2', + status: 0, + path: '/performance/report/all', + permission: ['PROJECT_PERFORMANCE_REPORT:READ'], + api: ["/share/generate/expired"], + url: "/assets/guide/performance/task-2.gif" + }, + ], + rate: 0, + status: 0 + }, + { + id: 4, + name: "project", + title: 'side_task.project_setting.title', + percentage: 0, + permission: ['WORKSPACE_PROJECT_MANAGER:READ+CREATE', 'PROJECT_USER:READ+CREATE', 'PROJECT_ENVIRONMENT:READ+CREATE'], + taskData: [ + { + id: 1, + name: 'side_task.project_setting.task_1', + status: 0, + permission: ['WORKSPACE_PROJECT_MANAGER:READ+CREATE'], + api: ["/project/add"], + path: '/setting/project/:type', + url: "/assets/guide/project/task-1.gif" + }, + { + id: 2, + name: 'side_task.project_setting.task_2', + status: 0, + permission: ['PROJECT_USER:READ+CREATE'], + api: ["/project/member/add", "/setting/user/project/member/add"], + path: '/project/member', + url: "/assets/guide/project/task-2.gif" + }, + { + id: 3, + name: 'side_task.project_setting.task_3', + status: 0, + permission: ['PROJECT_ENVIRONMENT:READ+CREATE'], + api: ["/environment/add"], + path: '/project/env', + url: "/assets/guide/project/task-3.gif" + }, + ], + rate: 0, + status: 0 + }, + { + id: 5, + name: "ui", + title: 'side_task.ui_test.title', + percentage: 0, + permission: ['PROJECT_UI_ELEMENT:READ+CREATE', 'PROJECT_UI_SCENARIO:READ+CREATE', 'PROJECT_UI_SCENARIO:READ+RUN', 'PROJECT_UI_SCENARIO:READ+DEBUG'], + taskData: [ + { + id: 1, + name: 'side_task.ui_test.task_1', + status: 0, + permission: ['PROJECT_UI_ELEMENT:READ+CREATE'], + api: ["/ui/element/add"], + path: '/ui/element', + url: "/assets/guide/ui/task-1.gif" + }, + { + id: 2, + name: 'side_task.ui_test.task_2', + status: 0, + permission: ['PROJECT_UI_SCENARIO:READ+CREATE'], + api: ["/ui/automation/create"], + path: '/ui/automation', + url: "/assets/guide/ui/task-2.gif" + }, + { + id: 2, + name: 'side_task.ui_test.task_3', + status: 0, + permission: ['PROJECT_UI_SCENARIO:READ+RUN', 'PROJECT_UI_SCENARIO:READ+DEBUG'], + api: ["/ui/automation/run/debug"], + path: '/ui/automation', + url: "/assets/guide/ui/task-3.gif" + }, + ], + rate: 0, + status: 0 + }, ] diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java index f4c445edad..ca1acb2e23 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java @@ -1242,55 +1242,40 @@ public class TestPlanReportService { } else { Map> requestEnvMap = new HashMap<>(); if (MapUtils.isEmpty(runInfoDTO.getRequestEnvMap())) { - if (MapUtils.isNotEmpty(runInfoDTO.getApiCaseRunInfo())) { - for (Map map : runInfoDTO.getApiCaseRunInfo().values()) { - requestEnvMap = TestPlanReportUtil.mergeEnvironmentMap(requestEnvMap, map); - } - } - if (MapUtils.isNotEmpty(runInfoDTO.getScenarioRunInfo())) { - for (Map> map : runInfoDTO.getScenarioRunInfo().values()) { - requestEnvMap = TestPlanReportUtil.mergeProjectEnvMap(requestEnvMap, map); - } - } - if (MapUtils.isNotEmpty(runInfoDTO.getUiScenarioRunInfo())) { - for (Map> map : runInfoDTO.getUiScenarioRunInfo().values()) { - requestEnvMap = TestPlanReportUtil.mergeProjectEnvMap(requestEnvMap, map); - } - } + testPlanReportDTO.setProjectEnvMap(requestEnvMap); } else { requestEnvMap = runInfoDTO.getRequestEnvMap(); - } - - Map> projectEnvMap = new HashMap<>(); - for (Map.Entry> entry : requestEnvMap.entrySet()) { - String projectId = entry.getKey(); - List envIdList = entry.getValue(); - Project project = baseProjectService.getProjectById(projectId); - String projectName = project == null ? null : project.getName(); - if (StringUtils.isNotEmpty(projectName)) { - List envNameList = new ArrayList<>(); - for (String envId : envIdList) { - String envName = apiTestEnvironmentService.selectNameById(envId); - if (StringUtils.isNoneBlank(envName)) { - envNameList.add(envName); + Map> projectEnvMap = new HashMap<>(); + for (Map.Entry> entry : requestEnvMap.entrySet()) { + String projectId = entry.getKey(); + List envIdList = entry.getValue(); + Project project = baseProjectService.getProjectById(projectId); + String projectName = project == null ? null : project.getName(); + if (StringUtils.isNotEmpty(projectName)) { + List envNameList = new ArrayList<>(); + for (String envId : envIdList) { + String envName = apiTestEnvironmentService.selectNameById(envId); + if (StringUtils.isNoneBlank(envName)) { + envNameList.add(envName); + } + } + //考虑到存在不同工作空间下有相同名称的项目,这里还是要检查一下项目名称是否已被记录 + if (projectEnvMap.containsKey(projectName)) { + envNameList.forEach(envName -> { + if (!projectEnvMap.get(projectName).contains(envName)) { + projectEnvMap.get(projectName).add(envName); + } + }); + } else { + projectEnvMap.put(projectName, new ArrayList<>() {{ + this.addAll(envNameList); + }}); } } - //考虑到存在不同工作空间下有相同名称的项目,这里还是要检查一下项目名称是否已被记录 - if (projectEnvMap.containsKey(projectName)) { - envNameList.forEach(envName -> { - if (!projectEnvMap.get(projectName).contains(envName)) { - projectEnvMap.get(projectName).add(envName); - } - }); - } else { - projectEnvMap.put(projectName, new ArrayList<>() {{ - this.addAll(envNameList); - }}); - } } - } - if (MapUtils.isNotEmpty(projectEnvMap)) { - testPlanReportDTO.setProjectEnvMap(projectEnvMap); + if (MapUtils.isNotEmpty(projectEnvMap)) { + testPlanReportDTO.setProjectEnvMap(projectEnvMap); + } } } //运行模式 diff --git a/test-track/frontend/src/business/plan/common/TestPlanRunModeWithEnv.vue b/test-track/frontend/src/business/plan/common/TestPlanRunModeWithEnv.vue index 4b94e84a2f..f45a63377a 100644 --- a/test-track/frontend/src/business/plan/common/TestPlanRunModeWithEnv.vue +++ b/test-track/frontend/src/business/plan/common/TestPlanRunModeWithEnv.vue @@ -210,7 +210,7 @@ export default { resourcePoolId: null, envMap: new Map(), environmentGroupId: "", - environmentType: ENV_TYPE.DEFAULT, + environmentType: ENV_TYPE.JSON, retryEnable: false, retryNum: 1, browser: "CHROME", @@ -271,10 +271,8 @@ export default { this.runConfig = JSON.parse(runModeConfig); if (!this.runConfig.envMap || JSON.stringify(this.runConfig.envMap) === "{}") { this.isEnvSaved = false; - this.runConfig.environmentType = ENV_TYPE.DEFAULT; } else { this.isEnvSaved = true; - this.runConfig.environmentType = ENV_TYPE.JSON; } this.runConfig.envMap = new Map(); this.runConfig.testPlanDefaultEnvMap = {}; @@ -283,9 +281,8 @@ export default { this.runConfig.onSampleError === true; } else { this.isEnvSaved = false; - //没保存过运行配置的测试计划,运行环境类型为default - this.runConfig.environmentType = ENV_TYPE.DEFAULT; } + this.runConfig.environmentType = ENV_TYPE.JSON; this.runModeVisible = true; this.testType = testType; this.getResourcePools(); diff --git a/test-track/frontend/src/business/plan/env/EnvSelectPopover.vue b/test-track/frontend/src/business/plan/env/EnvSelectPopover.vue index 59dded85ea..888ef29fd6 100644 --- a/test-track/frontend/src/business/plan/env/EnvSelectPopover.vue +++ b/test-track/frontend/src/business/plan/env/EnvSelectPopover.vue @@ -2,15 +2,11 @@
- {{ - $t("workspace.env_group.case_env") - }} - {{ $t("workspace.env_group.env_list") }} @@ -22,35 +18,35 @@ >
{{ getProjectName(pe.id) }}
{{ $t("api_test.environment.default_environment") @@ -61,29 +57,31 @@ }} - + {{ itemName }} - + > + {{ itemName }} + +
@@ -92,57 +90,57 @@
@@ -233,7 +231,7 @@ export default { envRadioChange(val, index) { this.eventData[index].envRadio = val; this.eventData[index].showEnvSelect = - this.eventData[index].envRadio === "CUSTOMIZE_ENV"; + this.eventData[index].envRadio === "CUSTOMIZE_ENV"; }, viewGroup() { this.visible = true; @@ -246,23 +244,23 @@ export default { }); } else { getEnvironmentOptions({projectIds: [...this.projectIds]}).then( - (res) => { - let groups = res.data; - this.disabledGroups = groups.filter( - (group) => group.disabled === true - ); - this.notDisabledGroups = groups.filter( - (group) => group.disabled === false - ); - this.$set(this.groups, 0, { - label: this.$t("workspace.env_group.available_group"), - options: this.notDisabledGroups, - }); - this.$set(this.groups, 1, { - label: this.$t("workspace.env_group.not_available_group"), - options: this.disabledGroups, - }); - } + (res) => { + let groups = res.data; + this.disabledGroups = groups.filter( + (group) => group.disabled === true + ); + this.notDisabledGroups = groups.filter( + (group) => group.disabled === false + ); + this.$set(this.groups, 0, { + label: this.$t("workspace.env_group.available_group"), + options: this.notDisabledGroups, + }); + this.$set(this.groups, 1, { + label: this.$t("workspace.env_group.not_available_group"), + options: this.disabledGroups, + }); + } ); } }, @@ -303,11 +301,11 @@ export default { let envId = this.envMap.get(id); // 选中环境是否存在 temp.selectEnv = - envs.filter((e) => e.id === envId).length === 0 ? null : envId; + envs.filter((e) => e.id === envId).length === 0 ? null : envId; } if ( - this.projectEnvMap && - Object.keys(this.projectEnvMap).length > 0 + this.projectEnvMap && + Object.keys(this.projectEnvMap).length > 0 ) { let projectEnvMapElement = this.projectEnvMap[d]; if (projectEnvMapElement.length > 0) { diff --git a/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanOverviewReport.vue b/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanOverviewReport.vue index 0a3bd3c595..8d21a6a018 100644 --- a/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanOverviewReport.vue +++ b/test-track/frontend/src/business/plan/view/comonents/report/detail/TestPlanOverviewReport.vue @@ -23,7 +23,7 @@
@@ -57,6 +57,21 @@
+ +
+ {{ $t("commons.environment") + ":" }} +
+
+
+ {{ $t('test_track.report.case_env') }} +
+
+ +