From 9441b6b2aaad724ca72287bcda28342c209ce27d Mon Sep 17 00:00:00 2001 From: CaptainB Date: Wed, 12 Apr 2023 10:19:57 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E5=90=84?= =?UTF-8?q?=E4=B8=AA=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/pom.xml | 90 +++++ .../main/java/io/metersphere/Application.java | 0 .../src/main/resources/application.properties | 100 +++++ .../main/resources/i18n/messages.properties | 0 .../resources/i18n/messages_en_US.properties | 0 .../resources/i18n/messages_zh_CN.properties | 0 .../resources/i18n/messages_zh_TW.properties | 0 .../migration/3.0.0/ddl/V1__init.sql | 0 .../migration/3.0.0/dml/V1_1__data.sql | 0 backend/framework/jmeter/pom.xml | 2 +- backend/framework/pom.xml | 1 - backend/framework/sdk/pom.xml | 2 +- .../xpack/display/dto/DisplayDTO.java | 13 - .../xpack/display/service/DisplayService.java | 13 - backend/pom.xml | 1 + backend/services/{app => api-test}/pom.xml | 10 +- .../metersphere/api/domain/ApiDefinition.java | 68 ++++ .../src/main/resources/i18n/api.properties | 0 .../main/resources/i18n/api_en_US.properties | 0 .../main/resources/i18n/api_zh_CN.properties | 0 .../main/resources/i18n/api_zh_TW.properties | 0 .../src/main/resources/application.properties | 17 - backend/services/load-test/pom.xml | 50 +++ .../io/metersphere/load/domain/LoadTest.java | 44 ++ .../src/main/resources/i18n/load.properties | 0 .../main/resources/i18n/load_en_US.properties | 0 .../main/resources/i18n/load_zh_CN.properties | 0 .../main/resources/i18n/load_zh_TW.properties | 0 backend/services/pom.xml | 10 + backend/services/project-management/pom.xml | 50 +++ .../metersphere/project/domain/Project.java | 50 +++ .../main/resources/i18n/project.properties | 0 .../resources/i18n/project_en_US.properties | 0 .../resources/i18n/project_zh_CN.properties | 0 .../resources/i18n/project_zh_TW.properties | 0 backend/services/system-setting/pom.xml | 50 +++ .../io/metersphere/system/domain/User.java | 40 ++ .../src/main/resources/i18n/system.properties | 0 .../resources/i18n/system_en_US.properties | 0 .../resources/i18n/system_zh_CN.properties | 0 .../resources/i18n/system_zh_TW.properties | 0 backend/services/test-plan/pom.xml | 50 +++ .../io/metersphere/plan/domain/TestPlan.java | 46 +++ .../src/main/resources/i18n/plan.properties | 74 ++++ .../main/resources/i18n/plan_en_US.properties | 382 ++++++++++++++++++ .../main/resources/i18n/plan_zh_CN.properties | 379 +++++++++++++++++ .../main/resources/i18n/plan_zh_TW.properties | 378 +++++++++++++++++ backend/services/test-track/pom.xml | 50 +++ .../io/metersphere/track/domain/TestCase.java | 72 ++++ .../src/main/resources/i18n/track.properties | 0 .../resources/i18n/track_en_US.properties | 0 .../resources/i18n/track_zh_CN.properties | 0 .../resources/i18n/track_zh_TW.properties | 0 .../ui-test}/pom.xml | 15 +- .../io/metersphere/ui/domain/UiScenario.java | 74 ++++ .../src/main/resources/i18n/ui.properties | 74 ++++ .../main/resources/i18n/ui_en_US.properties | 382 ++++++++++++++++++ .../main/resources/i18n/ui_zh_CN.properties | 379 +++++++++++++++++ .../main/resources/i18n/ui_zh_TW.properties | 378 +++++++++++++++++ backend/services/workstation/pom.xml | 50 +++ .../workstation/utils/ShareUtil.java | 50 +++ .../resources/i18n/workstation.properties | 0 .../i18n/workstation_en_US.properties | 0 .../i18n/workstation_zh_CN.properties | 0 .../i18n/workstation_zh_TW.properties | 0 65 files changed, 3386 insertions(+), 58 deletions(-) create mode 100644 backend/app/pom.xml rename backend/{services => }/app/src/main/java/io/metersphere/Application.java (100%) create mode 100644 backend/app/src/main/resources/application.properties rename backend/{services => }/app/src/main/resources/i18n/messages.properties (100%) rename backend/{services => }/app/src/main/resources/i18n/messages_en_US.properties (100%) rename backend/{services => }/app/src/main/resources/i18n/messages_zh_CN.properties (100%) rename backend/{services => }/app/src/main/resources/i18n/messages_zh_TW.properties (100%) rename backend/{services => }/app/src/main/resources/migration/3.0.0/ddl/V1__init.sql (100%) rename backend/{services => }/app/src/main/resources/migration/3.0.0/dml/V1_1__data.sql (100%) delete mode 100644 backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/dto/DisplayDTO.java delete mode 100644 backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/service/DisplayService.java rename backend/services/{app => api-test}/pom.xml (86%) create mode 100644 backend/services/api-test/src/main/java/io/metersphere/api/domain/ApiDefinition.java create mode 100644 backend/services/api-test/src/main/resources/i18n/api.properties create mode 100644 backend/services/api-test/src/main/resources/i18n/api_en_US.properties create mode 100644 backend/services/api-test/src/main/resources/i18n/api_zh_CN.properties create mode 100644 backend/services/api-test/src/main/resources/i18n/api_zh_TW.properties delete mode 100644 backend/services/app/src/main/resources/application.properties create mode 100644 backend/services/load-test/pom.xml create mode 100644 backend/services/load-test/src/main/java/io/metersphere/load/domain/LoadTest.java create mode 100644 backend/services/load-test/src/main/resources/i18n/load.properties create mode 100644 backend/services/load-test/src/main/resources/i18n/load_en_US.properties create mode 100644 backend/services/load-test/src/main/resources/i18n/load_zh_CN.properties create mode 100644 backend/services/load-test/src/main/resources/i18n/load_zh_TW.properties create mode 100644 backend/services/project-management/pom.xml create mode 100644 backend/services/project-management/src/main/java/io/metersphere/project/domain/Project.java create mode 100644 backend/services/project-management/src/main/resources/i18n/project.properties create mode 100644 backend/services/project-management/src/main/resources/i18n/project_en_US.properties create mode 100644 backend/services/project-management/src/main/resources/i18n/project_zh_CN.properties create mode 100644 backend/services/project-management/src/main/resources/i18n/project_zh_TW.properties create mode 100644 backend/services/system-setting/pom.xml create mode 100644 backend/services/system-setting/src/main/java/io/metersphere/system/domain/User.java create mode 100644 backend/services/system-setting/src/main/resources/i18n/system.properties create mode 100644 backend/services/system-setting/src/main/resources/i18n/system_en_US.properties create mode 100644 backend/services/system-setting/src/main/resources/i18n/system_zh_CN.properties create mode 100644 backend/services/system-setting/src/main/resources/i18n/system_zh_TW.properties create mode 100644 backend/services/test-plan/pom.xml create mode 100644 backend/services/test-plan/src/main/java/io/metersphere/plan/domain/TestPlan.java create mode 100644 backend/services/test-plan/src/main/resources/i18n/plan.properties create mode 100644 backend/services/test-plan/src/main/resources/i18n/plan_en_US.properties create mode 100644 backend/services/test-plan/src/main/resources/i18n/plan_zh_CN.properties create mode 100644 backend/services/test-plan/src/main/resources/i18n/plan_zh_TW.properties create mode 100644 backend/services/test-track/pom.xml create mode 100644 backend/services/test-track/src/main/java/io/metersphere/track/domain/TestCase.java create mode 100644 backend/services/test-track/src/main/resources/i18n/track.properties create mode 100644 backend/services/test-track/src/main/resources/i18n/track_en_US.properties create mode 100644 backend/services/test-track/src/main/resources/i18n/track_zh_CN.properties create mode 100644 backend/services/test-track/src/main/resources/i18n/track_zh_TW.properties rename backend/{framework/xpack-interface => services/ui-test}/pom.xml (86%) create mode 100644 backend/services/ui-test/src/main/java/io/metersphere/ui/domain/UiScenario.java create mode 100644 backend/services/ui-test/src/main/resources/i18n/ui.properties create mode 100644 backend/services/ui-test/src/main/resources/i18n/ui_en_US.properties create mode 100644 backend/services/ui-test/src/main/resources/i18n/ui_zh_CN.properties create mode 100644 backend/services/ui-test/src/main/resources/i18n/ui_zh_TW.properties create mode 100644 backend/services/workstation/pom.xml create mode 100644 backend/services/workstation/src/main/java/io/metersphere/workstation/utils/ShareUtil.java create mode 100644 backend/services/workstation/src/main/resources/i18n/workstation.properties create mode 100644 backend/services/workstation/src/main/resources/i18n/workstation_en_US.properties create mode 100644 backend/services/workstation/src/main/resources/i18n/workstation_zh_CN.properties create mode 100644 backend/services/workstation/src/main/resources/i18n/workstation_zh_TW.properties diff --git a/backend/app/pom.xml b/backend/app/pom.xml new file mode 100644 index 0000000000..fdc5109db1 --- /dev/null +++ b/backend/app/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + io.metersphere + backend + ${revision} + + app + ${revision} + app + + + + + io.metersphere + sdk + ${revision} + + + + io.metersphere + api-test + ${revision} + + + io.metersphere + load-test + ${revision} + + + io.metersphere + project-management + ${revision} + + + io.metersphere + system-setting + ${revision} + + + io.metersphere + test-plan + ${revision} + + + io.metersphere + test-track + ${revision} + + + io.metersphere + ui-test + ${revision} + + + io.metersphere + workstation + ${revision} + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/app/src/main/java/io/metersphere/Application.java b/backend/app/src/main/java/io/metersphere/Application.java similarity index 100% rename from backend/services/app/src/main/java/io/metersphere/Application.java rename to backend/app/src/main/java/io/metersphere/Application.java diff --git a/backend/app/src/main/resources/application.properties b/backend/app/src/main/resources/application.properties new file mode 100644 index 0000000000..ff96570910 --- /dev/null +++ b/backend/app/src/main/resources/application.properties @@ -0,0 +1,100 @@ +spring.application.name=metersphere +server.port=8081 +management.server.port=7071 +# +quartz.enabled=true +quartz.scheduler-name=msScheduler +# +logging.file.path=/opt/metersphere/logs/metersphere +# Hikari +spring.datasource.type=com.zaxxer.hikari.HikariDataSource +spring.datasource.hikari.maximum-pool-size=100 +spring.datasource.hikari.auto-commit=true +spring.datasource.hikari.idle-timeout=10000 +spring.datasource.hikari.pool-name=DatebookHikariCP +spring.datasource.hikari.max-lifetime=1800000 +spring.datasource.hikari.connection-timeout=30000 +spring.datasource.hikari.connection-test-query=SELECT 1 +# +spring.datasource.quartz.url=${spring.datasource.url} +spring.datasource.quartz.username=${spring.datasource.username} +spring.datasource.quartz.password=${spring.datasource.password} +spring.datasource.quartz.hikari.maximum-pool-size=50 +spring.datasource.quartz.hikari.auto-commit=true +spring.datasource.quartz.hikari.idle-timeout=10000 +spring.datasource.quartz.hikari.pool-name=DatebookHikariCP +spring.datasource.quartz.hikari.max-lifetime=1800000 +spring.datasource.quartz.hikari.connection-timeout=30000 +spring.datasource.quartz.hikari.connection-test-query=SELECT 1 +# +# spring.kafka +spring.kafka.bootstrap-servers=${kafka.bootstrap-servers} +spring.kafka.consumer.group-id=metersphere_group_id +spring.kafka.consumer.debug.group-id=metersphere_group_id_${random.uuid} +spring.kafka.listener.missing-topics-fatal=false +spring.kafka.producer.properties.max.request.size=32428800 +spring.kafka.producer.batch-size=16384 +spring.kafka.consumer.properties.max.partition.fetch.bytes=52428800 +# mybatis +mybatis.configuration.cache-enabled=true +mybatis.configuration.lazy-loading-enabled=false +mybatis.configuration.aggressive-lazy-loading=true +mybatis.configuration.multiple-result-sets-enabled=true +mybatis.configuration.use-column-label=true +mybatis.configuration.auto-mapping-behavior=full +mybatis.configuration.default-statement-timeout=25000 +mybatis.configuration.map-underscore-to-camel-case=true +# view +spring.mvc.throw-exception-if-no-handler-found=true +# ?? gzip ?? +server.compression.enabled=true +server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css,text/javascript,image/jpeg +server.compression.min-response-size=2048 +# flyway enable +spring.flyway.enabled=false +spring.flyway.baseline-on-migrate=true +spring.flyway.locations=classpath:migration +spring.flyway.table=metersphere_version +spring.flyway.baseline-version=0 +spring.flyway.encoding=UTF-8 +spring.flyway.validate-on-migrate=false +# jmeter kafka +kafka.fields= +kafka.timestamp=yyyy-MM-dd'T'HH:mm:ss.SSSZZ +kafka.sample-filter= +kafka.test-mode=info +kafka.parse-all-req-headers=false +kafka.parse-all-res-headers=false +kafka.compression-type= +kafka.batch-size=16384 +kafka.client-id=JMeterKafkaBackendListener +kafka.connections-max-idle-ms=180000 +kafka.ssl.enabled=false +kafka.ssl.key-password= +kafka.ssl.keystore-location= +kafka.ssl.keystore-password= +kafka.ssl.truststore-location= +kafka.ssl.truststore-password= +kafka.ssl.enabled-protocols=TLSv1.2,TLSv1.1,TLSv1 +kafka.ssl.keystore-type=JKS +kafka.ssl.protocol=TLS +kafka.ssl.provider= +kafka.ssl.truststore-type= +# jmeter +jmeter.home=/opt/jmeter +quartz.thread-count=10 +quartz.properties.org.quartz.jobStore.acquireTriggersWithinLock=true +# file upload +spring.servlet.multipart.max-file-size=500MB +spring.servlet.multipart.max-request-size=500MB +# i18n +spring.messages.basename=i18n/messages,i18n/api,i18n/load,i18n/project,i18n/system,i18n/plan,i18n/track,i18n/ui,i18n/workstation +# actuator +management.endpoints.web.exposure.include=* +management.endpoints.enabled-by-default=false +#spring.freemarker.checkTemplateLocation=false +spring.session.timeout=43200s +# +# redisson +spring.redis.redisson.file=file:/opt/metersphere/conf/redisson.yml +spring.session.redis.repository-type=indexed diff --git a/backend/services/app/src/main/resources/i18n/messages.properties b/backend/app/src/main/resources/i18n/messages.properties similarity index 100% rename from backend/services/app/src/main/resources/i18n/messages.properties rename to backend/app/src/main/resources/i18n/messages.properties diff --git a/backend/services/app/src/main/resources/i18n/messages_en_US.properties b/backend/app/src/main/resources/i18n/messages_en_US.properties similarity index 100% rename from backend/services/app/src/main/resources/i18n/messages_en_US.properties rename to backend/app/src/main/resources/i18n/messages_en_US.properties diff --git a/backend/services/app/src/main/resources/i18n/messages_zh_CN.properties b/backend/app/src/main/resources/i18n/messages_zh_CN.properties similarity index 100% rename from backend/services/app/src/main/resources/i18n/messages_zh_CN.properties rename to backend/app/src/main/resources/i18n/messages_zh_CN.properties diff --git a/backend/services/app/src/main/resources/i18n/messages_zh_TW.properties b/backend/app/src/main/resources/i18n/messages_zh_TW.properties similarity index 100% rename from backend/services/app/src/main/resources/i18n/messages_zh_TW.properties rename to backend/app/src/main/resources/i18n/messages_zh_TW.properties diff --git a/backend/services/app/src/main/resources/migration/3.0.0/ddl/V1__init.sql b/backend/app/src/main/resources/migration/3.0.0/ddl/V1__init.sql similarity index 100% rename from backend/services/app/src/main/resources/migration/3.0.0/ddl/V1__init.sql rename to backend/app/src/main/resources/migration/3.0.0/ddl/V1__init.sql diff --git a/backend/services/app/src/main/resources/migration/3.0.0/dml/V1_1__data.sql b/backend/app/src/main/resources/migration/3.0.0/dml/V1_1__data.sql similarity index 100% rename from backend/services/app/src/main/resources/migration/3.0.0/dml/V1_1__data.sql rename to backend/app/src/main/resources/migration/3.0.0/dml/V1_1__data.sql diff --git a/backend/framework/jmeter/pom.xml b/backend/framework/jmeter/pom.xml index d598ef3314..54af1ff2b5 100644 --- a/backend/framework/jmeter/pom.xml +++ b/backend/framework/jmeter/pom.xml @@ -12,7 +12,7 @@ jmeter ${revision} - ms-jmeter-core + jmeter UTF-8 diff --git a/backend/framework/pom.xml b/backend/framework/pom.xml index 20eb0c75dc..f25f011006 100644 --- a/backend/framework/pom.xml +++ b/backend/framework/pom.xml @@ -17,7 +17,6 @@ domain jmeter sdk - xpack-interface diff --git a/backend/framework/sdk/pom.xml b/backend/framework/sdk/pom.xml index f506a1beda..08090d6621 100644 --- a/backend/framework/sdk/pom.xml +++ b/backend/framework/sdk/pom.xml @@ -193,7 +193,7 @@ - + io.metersphere jmeter diff --git a/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/dto/DisplayDTO.java b/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/dto/DisplayDTO.java deleted file mode 100644 index 334ebbbece..0000000000 --- a/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/dto/DisplayDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.metersphere.xpack.display.dto; - -import io.metersphere.domain.SystemParameter; -import lombok.Getter; -import lombok.Setter; -import org.springframework.web.multipart.MultipartFile; - -@Getter -@Setter -public class DisplayDTO extends SystemParameter { - private MultipartFile file; - private String fileName; -} diff --git a/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/service/DisplayService.java b/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/service/DisplayService.java deleted file mode 100644 index 70922757d7..0000000000 --- a/backend/framework/xpack-interface/src/main/java/io/metersphere/xpack/display/service/DisplayService.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.metersphere.xpack.display.service; - -import io.metersphere.xpack.display.dto.DisplayDTO; -import org.springframework.web.multipart.MultipartFile; - -import java.util.List; - -public interface DisplayService { - - void save(List requests, List files); - - List uiInfo(String type); -} diff --git a/backend/pom.xml b/backend/pom.xml index fd064609a6..a6f923793f 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -16,6 +16,7 @@ framework services + app diff --git a/backend/services/app/pom.xml b/backend/services/api-test/pom.xml similarity index 86% rename from backend/services/app/pom.xml rename to backend/services/api-test/pom.xml index 4431c2a377..db37782eed 100644 --- a/backend/services/app/pom.xml +++ b/backend/services/api-test/pom.xml @@ -7,9 +7,9 @@ services ${revision} - app + api-test ${revision} - app + api-test @@ -18,11 +18,7 @@ sdk ${revision} - - io.metersphere - xpack-interface - ${revision} - + diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/domain/ApiDefinition.java b/backend/services/api-test/src/main/java/io/metersphere/api/domain/ApiDefinition.java new file mode 100644 index 0000000000..9c988bcb16 --- /dev/null +++ b/backend/services/api-test/src/main/java/io/metersphere/api/domain/ApiDefinition.java @@ -0,0 +1,68 @@ +package io.metersphere.api.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ApiDefinition implements Serializable { + private String id; + + private String projectId; + + private String name; + + private String method; + + private String modulePath; + + private String environmentId; + + private String schedule; + + private String status; + + private String moduleId; + + private String userId; + + private Long createTime; + + private Long updateTime; + + private String protocol; + + private String path; + + private Integer num; + + private String tags; + + private String originalState; + + private String createUser; + + private String caseTotal; + + private String caseStatus; + + private String casePassingRate; + + private Long deleteTime; + + private String deleteUserId; + + private Long order; + + private String refId; + + private String versionId; + + private Boolean latest; + + private Boolean toBeUpdated; + + private Long toBeUpdateTime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/api-test/src/main/resources/i18n/api.properties b/backend/services/api-test/src/main/resources/i18n/api.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/api-test/src/main/resources/i18n/api_en_US.properties b/backend/services/api-test/src/main/resources/i18n/api_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/api-test/src/main/resources/i18n/api_zh_CN.properties b/backend/services/api-test/src/main/resources/i18n/api_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/api-test/src/main/resources/i18n/api_zh_TW.properties b/backend/services/api-test/src/main/resources/i18n/api_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/app/src/main/resources/application.properties b/backend/services/app/src/main/resources/application.properties deleted file mode 100644 index 1863986876..0000000000 --- a/backend/services/app/src/main/resources/application.properties +++ /dev/null @@ -1,17 +0,0 @@ -spring.application.name=metersphere -server.port=8081 -management.server.port=7071 -# -quartz.enabled=true -quartz.scheduler-name=msScheduler -# -logging.file.path=/opt/metersphere/logs/metersphere - -# flyway -spring.flyway.enabled=true -spring.flyway.baseline-on-migrate=true -spring.flyway.locations=classpath:migration -spring.flyway.table=metersphere_version -spring.flyway.baseline-version=0 -spring.flyway.encoding=UTF-8 -spring.flyway.validate-on-migrate=false \ No newline at end of file diff --git a/backend/services/load-test/pom.xml b/backend/services/load-test/pom.xml new file mode 100644 index 0000000000..89fad73d8a --- /dev/null +++ b/backend/services/load-test/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + load-test + ${revision} + load-test + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/load-test/src/main/java/io/metersphere/load/domain/LoadTest.java b/backend/services/load-test/src/main/java/io/metersphere/load/domain/LoadTest.java new file mode 100644 index 0000000000..209aba0931 --- /dev/null +++ b/backend/services/load-test/src/main/java/io/metersphere/load/domain/LoadTest.java @@ -0,0 +1,44 @@ +package io.metersphere.load.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class LoadTest implements Serializable { + private String id; + + private String projectId; + + private String name; + + private String description; + + private Long createTime; + + private Long updateTime; + + private String status; + + private String testResourcePoolId; + + private String userId; + + private Integer num; + + private String createUser; + + private Integer scenarioVersion; + + private String scenarioId; + + private Long order; + + private String versionId; + + private String refId; + + private Boolean latest; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/load-test/src/main/resources/i18n/load.properties b/backend/services/load-test/src/main/resources/i18n/load.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/load-test/src/main/resources/i18n/load_en_US.properties b/backend/services/load-test/src/main/resources/i18n/load_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/load-test/src/main/resources/i18n/load_zh_CN.properties b/backend/services/load-test/src/main/resources/i18n/load_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/load-test/src/main/resources/i18n/load_zh_TW.properties b/backend/services/load-test/src/main/resources/i18n/load_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/pom.xml b/backend/services/pom.xml index 65f657ab05..cea307cb79 100644 --- a/backend/services/pom.xml +++ b/backend/services/pom.xml @@ -13,5 +13,15 @@ services ${revision} + + api-test + load-test + project-management + system-setting + test-plan + test-track + ui-test + workstation + diff --git a/backend/services/project-management/pom.xml b/backend/services/project-management/pom.xml new file mode 100644 index 0000000000..f3a46a49e0 --- /dev/null +++ b/backend/services/project-management/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + project-management + ${revision} + project-management + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/domain/Project.java b/backend/services/project-management/src/main/java/io/metersphere/project/domain/Project.java new file mode 100644 index 0000000000..95dbcd52cf --- /dev/null +++ b/backend/services/project-management/src/main/java/io/metersphere/project/domain/Project.java @@ -0,0 +1,50 @@ +package io.metersphere.project.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class Project implements Serializable { + private String id; + + private String workspaceId; + + private String name; + + private String description; + + private Long createTime; + + private Long updateTime; + + private String tapdId; + + private String jiraKey; + + private String zentaoId; + + private String azureDevopsId; + + private String caseTemplateId; + + private String issueTemplateId; + + private String createUser; + + private String systemId; + + private String azureFilterId; + + private String platform; + + private Boolean thirdPartTemplate; + + private Boolean versionEnable; + + private String issueConfig; + + private String apiTemplateId; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/project-management/src/main/resources/i18n/project.properties b/backend/services/project-management/src/main/resources/i18n/project.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/project-management/src/main/resources/i18n/project_en_US.properties b/backend/services/project-management/src/main/resources/i18n/project_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/project-management/src/main/resources/i18n/project_zh_CN.properties b/backend/services/project-management/src/main/resources/i18n/project_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/project-management/src/main/resources/i18n/project_zh_TW.properties b/backend/services/project-management/src/main/resources/i18n/project_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/system-setting/pom.xml b/backend/services/system-setting/pom.xml new file mode 100644 index 0000000000..7460e39968 --- /dev/null +++ b/backend/services/system-setting/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + system-setting + ${revision} + system-setting + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/domain/User.java b/backend/services/system-setting/src/main/java/io/metersphere/system/domain/User.java new file mode 100644 index 0000000000..5a11cb9431 --- /dev/null +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/domain/User.java @@ -0,0 +1,40 @@ +package io.metersphere.system.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class User implements Serializable { + private String id; + + private String name; + + private String email; + + private String password; + + private String status; + + private Long createTime; + + private Long updateTime; + + private String language; + + private String lastWorkspaceId; + + private String phone; + + private String source; + + private String lastProjectId; + + private String createUser; + + private String platformInfo; + + private String seleniumServer; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/system-setting/src/main/resources/i18n/system.properties b/backend/services/system-setting/src/main/resources/i18n/system.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/system-setting/src/main/resources/i18n/system_en_US.properties b/backend/services/system-setting/src/main/resources/i18n/system_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/system-setting/src/main/resources/i18n/system_zh_CN.properties b/backend/services/system-setting/src/main/resources/i18n/system_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/system-setting/src/main/resources/i18n/system_zh_TW.properties b/backend/services/system-setting/src/main/resources/i18n/system_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/test-plan/pom.xml b/backend/services/test-plan/pom.xml new file mode 100644 index 0000000000..f2939c35a3 --- /dev/null +++ b/backend/services/test-plan/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + test-plan + ${revision} + test-plan + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/domain/TestPlan.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/domain/TestPlan.java new file mode 100644 index 0000000000..f227978826 --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/domain/TestPlan.java @@ -0,0 +1,46 @@ +package io.metersphere.plan.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TestPlan implements Serializable { + private String id; + + private String workspaceId; + + private String reportId; + + private String name; + + private String description; + + private String status; + + private String stage; + + private Long createTime; + + private Long updateTime; + + private Long plannedStartTime; + + private Long plannedEndTime; + + private Long actualStartTime; + + private Long actualEndTime; + + private String creator; + + private String projectId; + + private Integer executionTimes; + + private Boolean automaticStatusUpdate; + + private Boolean repeatCase; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/test-plan/src/main/resources/i18n/plan.properties b/backend/services/test-plan/src/main/resources/i18n/plan.properties new file mode 100644 index 0000000000..87d88014b4 --- /dev/null +++ b/backend/services/test-plan/src/main/resources/i18n/plan.properties @@ -0,0 +1,74 @@ +test_case_exist= +before_delete_plan= +test_case_node_level_tip= +test_case_node_level= +test_case_module_not_null= +test_case_create_module_fail= +test_case_import_template_name= +test_case_import_template_sheet= +module_not_null= +user_not_exists= +test_case_already_exists= +parse_data_error= +missing_header_information= +number= +row= +error= +incorrect_format= +test_case_priority_validate= +test_case_method_validate= +test_case_name= +test_case_module= +test_case_type= +test_case_maintainer= +test_case_priority= +test_case_method= +test_case_prerequisite= +test_case_remark= +test_case_step_desc= +test_case_step_result= +test_case= +user= +user_import_template_name= +user_import_template_sheet= +user_import_format_wrong= +user_import_id_is_repeat= +user_import_email_is_repeat= +user_import_password_format_wrong= +user_import_phone_format_wrong= +user_import_email_format_wrong= +user_import_organization_not_fond= +user_import_workspace_not_fond= +org_admin= +org_member= +test_manager= +tester= +read_only_user= +module= +preconditions_optional= +remark_optional= +do_not_modify_header_order= +module_created_automatically= +options= +options_yes= +options_no= +required= +password_format_is_incorrect= +please_input_workspace_member= +test_case_report_template_repeat= +custom_field_already= +id_required= +id_repeat_in_table= +template_already= +expect_name_exists= +id_not_rightful= +mock_warning= +invalid_parameter= +workspace_template_settings_issue= +zentao_test_type_error= +issue_jira_info_error= +case_status_not_exist= +jira_auth_error= +# issue template copy +target_issue_template_not_checked= +source_issue_template_is_empty= diff --git a/backend/services/test-plan/src/main/resources/i18n/plan_en_US.properties b/backend/services/test-plan/src/main/resources/i18n/plan_en_US.properties new file mode 100644 index 0000000000..f07b1c41cc --- /dev/null +++ b/backend/services/test-plan/src/main/resources/i18n/plan_en_US.properties @@ -0,0 +1,382 @@ +#commons +error_lang_invalid=Invalid language parameter +file_cannot_be_null=File cannot be empty! +cannot_be_null=\tCannot be empty +number=Number +row=row +error=error +connection_failed=Connection failed +connection_timeout=Connection timeout +delete_fail=Delete fail +start_engine_fail=Start fail +upload_fail=Upload fail +invalid_parameter=Invalid parameter! +name_already_exists=Name already exists +resource_not_exist=The resource does not exist or has been deleted +upload_file_fail_get_file_path_fail=Failed to upload the file, failed to get the file path +#user related +user_email_already_exists=User email already exists +user_id_is_null=User ID cannot be null +user_name_is_null=User name cannot be null +user_email_is_null=User email cannot be null +password_is_null=Password cannot be null +user_id_already_exists=User ID already exists +password_modification_failed=The old password is wrong. Please re-enter it +cannot_delete_current_user=Cannot delete the user currently logged in +user_already_exists=The user already exists in the current member list +cannot_remove_current=Unable to remove the currently logged in user +password_is_incorrect=Incorrect password or username +user_not_exist=user does not exist: +user_has_been_disabled=the user has been disabled. +excessive_attempts=Excessive attempts +user_locked=the user has been locked. +user_expires=user expires. +not_authorized=not authorized. +login_fail=Login fail +user_apikey_limit=Can have up to 5 api keys +please_logout_current_user=Please logout current user first +#load test +edit_load_test_not_found=Cannot edit test, test not found= +run_load_test_not_found=Cannot run test, test not found= +run_load_test_file_not_found=Unable to run test, unable to get test file meta information, test ID= +run_load_test_file_content_not_found=Cannot run test, cannot get test file content, test ID= +run_load_test_file_init_error=Failed to run the test, please go to [Settings-System-System Parameter Setting] to check the current site configuration. For details, see https://metersphere.io/docs/faq/load_ test/#url +load_test_is_running=Load test is running, please wait. +load_test_kafka_invalid=Kafka is not available, please check the configuration +cannot_edit_load_test_running=Cannot modify the running test +test_not_found=Test cannot be found: +test_not_running=Test is not running +load_test_already_exists=Duplicate load test name +load_test_name_length=The length of the test name exceeds the limit +no_nodes_message=No node message +duplicate_node_ip=Duplicate IPs +duplicate_node_port=Duplicate Ports +duplicate_node_ip_port=Duplicate IPs & Ports +max_thread_insufficient=The number of concurrent users exceeds +related_case_del_fail_prefix=Connected to +related_case_del_fail_suffix=TestCase, please disassociate first +jmx_content_valid=JMX content is invalid +container_delete_fail=The container failed to stop, please try again +load_test_report_file_not_exist=There is no JTL file in the current report, please wait or execute it again to get it +#workspace +workspace_name_is_null=Workspace name cannot be null +workspace_name_already_exists=The workspace name already exists +workspace_does_not_belong_to_user=The current workspace does not belong to the current user +workspace_not_exists=Workspace is not exists +#test resource pool +test_resource_pool_id_is_null=Test Resource Pool ID cannot be null +test_resource_pool_name_is_null=Test Resource Pool name cannot be null +test_resource_pool_name_already_exists=The test resource pool name already exists +load_test=Load Test +test_resource_pool_is_use=This resource pool is in use and cannot be deleted +only_one_k8s=Only one K8S can be added +test_resource_pool_not_exists=Test resource pool not exists +test_resource_pool_invalid=Test resource pool invalid +#project +project_name_is_null=Project name cannot be null +project_name_already_exists=The project name already exists +project_file_already_exists=The file already exists +project_file_in_use=use this file and cannot be deleted. +#organization +organization_name_is_null=organization name cannot be null +organization_name_already_exists=The organization name already exists +organization_does_not_belong_to_user=The current organization does not belong to the current user +organization_id_is_null=Organization ID cannot be null +#api +api_load_script_error=Load script error +illegal_xml_format=illegal XML format +api_report_is_null="Report is null, can't update" +api_test_environment_already_exists="Api test environment already exists" +api_test=API Test +#test case +test_case_node_level=level +test_case_node_level_tip=The node tree maximum depth is +test_case_module_not_null=The owned module cannot be empty +test_case_create_module_fail=Failed to create module +test_case_import_template_name=Test_case_templates +test_case_import_template_sheet=Template +module_not_null=The module must not be blank +user_not_exists=The user in this project is not exists +test_case_already_exists=The test case in this project is exists +parse_data_error=Parse data error +missing_header_information=Missing header information +test_case_exist=A test case already exists under this project: +node_deep_limit=The node depth does not exceed 8 layers! +before_delete_plan=There is an associated test case under this plan, please unlink it first! +incorrect_format=\tincorrect format +test_case_step_model_validate=\tmust be TEXT, STEP +test_case_priority_validate=\tmust be P0, P1, P2, P3 +test_case_method_validate=\tmust be manual, auto +test_case_name=Name +test_case_type=Type +test_case_maintainer=Maintainer +test_case_priority=Priority +test_case_method=method +test_case_prerequisite=Prerequisite +test_case_remark=Remark +test_case_step_desc=Step description +test_case_step_result=Step result +test_case_module=Module +test_case=Case +user=User +user_import_template_name=User import templates +user_import_template_sheet=templates +user_import_format_wrong=input error +user_import_id_is_repeat=Id repeat +user_import_email_is_repeat=E-mail repeat +user_import_password_format_wrong=Wrong password format +user_import_phone_format_wrong=Wrong phone format +user_import_email_format_wrong=Wrong email format +user_import_organization_not_fond=Organization is not found +user_import_workspace_not_fond=Workspace is not found +org_admin=Organization manager +org_member=Organization member +test_manager=Test manager +tester=Tester +read_only_user=Read-only user +module=Module +num_needed_modify_testcase=ID is needed when modifying testcase +num_needless_create_testcase=ID is needless when creating testcase +tag_tip_pattern=Labels should be separated by semicolons or commas +preconditions_optional=Preconditions optional +remark_optional=Remark optional +do_not_modify_header_order=Do not modify the header order +module_created_automatically=If there is no such module, will be created automatically +options=options +options_yes=Yes +options_no=No +required=Required +password_format_is_incorrect=Valid password: 8-30 digits, English upper and lower case letters + numbers + special characters (optional) +please_input_project_member=Please input project merber's number +test_case_report_template_repeat=The workspace has the same name template +plan_name_already_exists=Test plan name already exists +test_case_already_exists_excel=There are duplicate test cases in the import file +test_case_module_already_exists=The module name already exists at the same level +api_test_name_already_exists=Test name already exists +functional_method_tip=Functional test not support auto method +custom_num_is_exist=Use case custom ID already exists +custom_num_is_not_exist=Use case custom ID not exists +id_required=ID required +id_repeat_in_table=ID is repeat in table +step_model_tip=Step description fill in STEP, text description please fill in TEXT (not required) +case_status_not_exist=The use case status must be Prepare, Underway way and Completed +issue_project_not_exist=ID does not exist or other errors +tapd_project_not_exist=The associated TAPD item ID does not exist +zentao_get_project_builds_fail=Get Affecting Version Errors +zentao_project_id_not_exist=The associated Zen Tao ID does not exist or other errors +#ldap +ldap_url_is_null=LDAP address is empty +ldap_dn_is_null=LDAP binding DN is empty +ldap_ou_is_null=LDAP parameter OU is empty +ldap_password_is_null=LDAP password is empty +ldap_connect_fail=Connection LDAP failed +ldap_connect_fail_user=Connection LDAP failed, wrong DN or password bound +ldap_user_filter_is_null=LDAP user filter is empty +ldap_user_mapping_is_null=LDAP user mapping is empty +authentication_failed=User authentication failed,wrong user name or password +user_not_found_or_not_unique=User does not exist or is not unique +find_more_user=Multiple users found +ldap_authentication_not_enabled=LDAP authentication is not enabled +login_fail_email_null=Login failed, user mailbox is empty +login_fail_ou_error=Login failed, please check the user OU +login_fail_filter_error=Login failed, please check the user filter +check_ldap_mapping=Check LDAP attribute mapping +ldap_mapping_value_null=LDAP user attribute mapping field is empty +oauth_mapping_config_error=OAuth2 attribute mapping misconfiguration +oauth_mapping_value_null=OAuth2 user attribute mapping field is empty +#quota +quota_project_excess_ws_api=The total number of interface tests for a project cannot exceed the workspace quota +quota_project_excess_ws_performance=The total number of performance tests for a project cannot exceed the workspace quota +quota_project_excess_ws_max_threads=The maximum concurrent number of projects cannot exceed the quota of the workspace +quota_project_excess_ws_max_duration=The stress test duration of the project cannot exceed the workspace quota +quota_project_excess_ws_resource_pool=The resource pool of the project cannot exceed the scope of the resource pool of the workspace +quota_project_excess_ws_vum_total=The sum of the total number of vums of the project cannot exceed the workspace quota +quota_vum_used_gt_vum_total=The total number of vum cannot be less than the number of consumed vum +quota_api_excess_workspace=The number of interface tests exceeds the workspace quota +quota_api_excess_project=The number of interface tests exceeds the project limit +quota_performance_excess_workspace=The number of performance tests exceeds the workspace quota +quota_performance_excess_project=The number of performance tests exceeds the project limit +quota_max_threads_excess_workspace=The maximum number of concurrent threads exceeds the workspace quota +quota_max_threads_excess_project=The maximum concurrent number exceeds the project limit +quota_duration_excess_workspace=The stress test duration exceeds the work space quota +quota_duration_excess_project=The stress test time exceeds the project limit +quota_member_excess_workspace=The number of members exceeds the workspace quota +quota_member_excess_project=The number of members exceeds the project quota +quota_project_excess_project=Number of projects exceeds workspace quota +quota_vum_used_excess_workspace=The amount of vum consumed exceeds the workspace quota +quota_vum_used_excess_project=The amount of vum consumed exceeds the project quota +import_xmind_count_error=The number of use cases imported into the mind map cannot exceed 800 +import_xmind_not_found=Test case not found +license_valid_license_error=Authorization authentication failed +test_review_task_notice=Test review task notice +swagger_url_scheduled_import_notification=SwaggerUrl Scheduled import notification +test_track.length_less_than=The title is too long, the length must be less than +# check owner +check_owner_project=The current user does not have permission to operate this project +check_owner_test=The current user does not have permission to operate this test +check_owner_case=The current user does not have permission to operate this use case +check_owner_plan=The current user does not have permission to operate this plan +check_owner_review=The current user does not have permission to operate this review +check_owner_comment=The current user does not have permission to manipulate this comment +check_owner_workspace=The current user does not have permission to operate this workspace +upload_content_is_null=Imported content is empty +test_plan_notification=Test plan notification +task_defect_notification=Task defect notification +task_notification_=Timing task result notification +api_definition_url_not_repeating=The interface request address already exists +api_definition_name_not_repeating=The same name-url combination already exists +task_notification_jenkins=Jenkins Task notification +task_notification=Result notification +message_task_already_exists=Task recipient already exists +#automation +automation_name_already_exists=the scenario already exists in the module of the same project +automation_exec_info=There are no test steps to execute +delete_check_reference_by=be referenced by Scenario +not_execute=Not execute +execute_not_pass=Not pass +execute_pass=Pass +import_fail_custom_num_exists=import fail, custom num is exists +#authsource +authsource_name_already_exists=Authentication source name already exists +authsource_name_is_null=Authentication source name cannot be empty +authsource_configuration_is_null=Authentication source configuration cannot be empty +mobile_phone_number_cannot_be_empty=When the receiving mode is pin and enterprise wechat: the user's mobile phone number cannot be empty +custom_field_already=A feild already exists under this workspace: +template_already=A template already exists under this workspace: +expect_name_exists=Expect name is exists +ssl_password_error=The authentication password is wrong, please re-enter the password +ssl_file_error=Failed to load the certification file, please check the certification file +#log +api_definition=Api definition +api_definition_case=Api definition case +api_automation_schedule=Api automation schedule +api_automation=Api automation +api_automation_report=Test Report +track_test_case=Test case +track_test_case_review=Case review +track_test_plan=Test plan +track_test_plan_schedule=Test plan schedule +track_bug=Defect management +track_report=Report +performance_test=Performance test +performance_test_report=Performance test report +system_user=System user +system_organization=System organization +system_workspace=workspace +system_test_resource=System test resource +system_parameter_setting=System parameter setting +system_quota_management=System Quota management +system_authorization_management=System authorization management +organization_member=Organization member +organization_workspace=Organization workspace +project_project_member=Project member +workspace_service_integration=Workspace service integration +workspace_message_settings=Workspace message settings +workspace_member=Workspace member +workspace_template_settings_field=Workspace template settings field +workspace_template_settings_case=Workspace template settings case +workspace_template_settings_issue=Workspace template settings issue +project_project_manager=Project project manager +project_project_jar=Project project jar +project_environment_setting=Project environment setting +project_file_management=Project file management +personal_information_personal_settings=Personal information personal settings +personal_information_apikeys=Personal information API Keys +auth_title=Auth +group_permission=Group +test_case_status_prepare=Prepare +test_case_status_again=Again +test_case_status_running=Running +test_case_status_finished=Finished +test_case_status_error=Error +test_case_status_success=Success +test_case_status_trash=Trash +test_case_status_saved=Saved +connection_expired=The connection has expired, please get it again +# track home +api_case=Api +performance_case=Performance +scenario_case=Scenario +scenario_name_is_null=Scenario name cannot be empty +create_user=Create user +test_case_status=Case status +id_not_rightful=ID is not rightful +project_reference_multiple_plateform=Projects point to multiple third-party platforms +# mock +mock_warning=No matching Mock expectation was found +zentao_test_type_error=invalid Zentao request +#项目报告 +enterprise_test_report=Enterprise report +count=Count +cannot_find_project=Cannot find project +project_repeatable_is_false=Url repeatable not open +#环境组 +null_environment_group_name=Environment group name is null +environment_group_name=Environment group name +environment_group_exist=already exists +environment_group_has_duplicate_project=Environment group has duplicate project +#误报库 +error_report_library=Error report +issue_jira_info_error=Check the service integration information or Jira project ID +error_code_is_unique=Error code is not unique +no_version_exists=version not exists +jira_auth_error=Account name or password (Token) is wrong +jira_auth_url_error=The test connection failed, please check whether the Jira address is correct +#ui 指令校驗 +param_error=Param Error +is_null=can't be null +url_is_null=URL can't be null +frame_index_is_null=frame index can't be null +element_is_null=element can't be null +locator_is_null=locator can't be null +coord=coord +input_content=input +subitem_type=subitem type +subitem=subitem +varname=variable +varname_or_value=variable or value +attributeName=attribute name +webtitle_varname=title varname +webhandle_varname=handle varname +cant_be_negative=can't be negative +expression=expression +times=times +command=command +extract_type=extract type +cmdValidation=validation +cmdValidateValue=validate value +cmdValidateText=validate text +cmdValidateDropdown=validate dropdown +cmdValidateElement=validate element +cmdValidateTitle=validate title +cmdOpen=open +cmdSelectWindow=select window +cmdSetWindowSize=set window size +cmdSelectFrame=select frame +cmdDialog=dialog operation +cmdDropdownBox=dropdown +submit=submit +cmdSetItem=set item +cmdWaitElement=wait element +cmdInput=input +cmdMouseClick=click +cmdMouseMove=mouse move +cmdMouseDrag=mouse drag +cmdTimes=times +cmdForEach=ForEach +cmdWhile=While +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=close +cmdExtraction=extracion +cmdExtractWindow=window extraction +cmdExtractElement=element extraction +tcp_mock_not_unique=This tcp port is be used +no_tcp_mock_port=No idle tcp port, please contact administrators. +name_already_exists_in_module=Name already exists in same module +repository_module_already_exists=The repository name already exists at the same project +can_not_move_to_repository_node=Can not move to repository node +# issue template copy +target_issue_template_not_checked=Cannot copy, target project not checked +source_issue_template_is_empty=Copy error, source project is empty \ No newline at end of file diff --git a/backend/services/test-plan/src/main/resources/i18n/plan_zh_CN.properties b/backend/services/test-plan/src/main/resources/i18n/plan_zh_CN.properties new file mode 100644 index 0000000000..9bf0e7818d --- /dev/null +++ b/backend/services/test-plan/src/main/resources/i18n/plan_zh_CN.properties @@ -0,0 +1,379 @@ +#commons +error_lang_invalid=语言参数错误 +file_cannot_be_null=文件不能为空! +cannot_be_null=不能为空 +number=第 +row=行 +error=出错 +delete_fail=删除失败 +start_engine_fail=启动失败 +upload_fail=文件上传失败 +invalid_parameter=非法的参数 +name_already_exists=该名称已经存在 +resource_not_exist=资源不存在或已删除 +upload_file_fail_get_file_path_fail=文件上传失败,获取文件上传路径为空 +#user related +user_email_already_exists=用户邮箱已存在 +user_id_is_null=用户ID不能为空 +user_name_is_null=用户名不能为空 +user_email_is_null=用户邮箱不能为空 +password_is_null=密码不能为空 +user_id_already_exists=用户id已存在 +password_modification_failed=旧密码输入错误,请重新输入 +cannot_delete_current_user=无法删除当前登录用户 +connection_failed=连接失败 +connection_timeout=连接超时 +user_already_exists=该用户已存在于当前成员列表中 +cannot_remove_current=无法移除当前登录用户 +login_fail=登录失败 +password_is_incorrect=用户名或密码不正确 +user_not_exist=用户不存在: +user_has_been_disabled=用户已被禁用 +excessive_attempts=操作频繁 +user_locked=用户被锁定 +user_expires=用户过期 +not_authorized=未经授权 +user_apikey_limit=最多能有5个Api key +please_logout_current_user=请先登出当前用户 +#load test +edit_load_test_not_found=无法编辑测试,未找到测试: +run_load_test_not_found=无法运行测试,未找到测试: +run_load_test_file_not_found=无法运行测试,无法获取测试文件元信息,测试ID: +run_load_test_file_content_not_found=无法运行测试,无法获取测试文件内容,测试ID: +run_load_test_file_init_error=无法运行测试,请前往 [系统设置-系统-系统参数设置] 检查当前站点配置,详情见 https://metersphere.io/docs/v2.x/faq/load_test/#url +load_test_is_running=测试正在运行, 请等待 +load_test_kafka_invalid=Kafka 不可用,请检查配置 +cannot_edit_load_test_running=不能修改正在运行的测试 +test_not_found=测试不存在: +test_not_running=测试未运行 +load_test_already_exists=测试名称不能重复 +load_test_name_length=测试名称长度超过限制 +no_nodes_message=没有节点信息 +duplicate_node_ip=节点 IP 重复 +duplicate_node_port=节点 Port 重复 +duplicate_node_ip_port=节点 IP、Port 重复 +max_thread_insufficient=并发用户数超额 +related_case_del_fail_prefix=已关联到 +related_case_del_fail_suffix=测试用例,请先解除关联 +jmx_content_valid=JMX 内容无效,请检查 +container_delete_fail=容器由于网络原因停止失败,请重试 +load_test_report_file_not_exist=当前报告没有JTL文件,请等待或重新执行以便获取 +#workspace +workspace_name_is_null=工作空间名不能为空 +workspace_name_already_exists=工作空间名已存在 +workspace_does_not_belong_to_user=当前工作空间不属于当前用户 +workspace_not_exists=工作空间不存在 +#test resource pool +test_resource_pool_id_is_null=资源池ID不能为空 +test_resource_pool_name_is_null=资源池名称不能为空 +test_resource_pool_name_already_exists=资源池名称已存在 +load_test=性能测试 +test_resource_pool_is_use=正在使用此资源池,无法删除 +only_one_k8s=只能添加一个 K8S +test_resource_pool_not_exists=测试资源池不存在 +test_resource_pool_invalid=当前测试使用的资源池处于禁用状态 +#project +project_name_is_null=项目名称不能为空 +project_name_already_exists=项目名称已存在 +project_file_already_exists=项目下该文件已经存在 +project_file_in_use=占用文件,无法删除。 +#organization +organization_name_is_null=组织名不能为空 +organization_name_already_exists=组织名已存在 +organization_does_not_belong_to_user=当前组织不属于当前用户 +organization_id_is_null=组织 ID 不能为空 +#api +api_load_script_error=读取脚本失败 +illegal_xml_format=不合法的 XML 格式 +api_report_is_null="测试报告是未生成,无法更新" +api_test_environment_already_exists="已存在该名称的环境配置" +api_test=接口测试 +#test case +test_case_node_level=层 +test_case_node_level_tip=模块树最大深度为 +test_case_module_not_null=所属模块不能为空 +test_case_create_module_fail=创建模块失败 +test_case_import_template_name=测试用例模版 +test_case_import_template_sheet=模版 +module_not_null=所属模块不能为空格 +user_not_exists=该项目下无该用户 +test_case_already_exists=该项目下已存在该测试用例 +parse_data_error=解析数据出错 +missing_header_information=缺少头部信息 +test_case_exist=该项目下已存在用例: +node_deep_limit=节点深度不超过8层! +before_delete_plan=该计划下存在关联测试用例,请先取消关联! +incorrect_format=格式错误 +test_case_step_model_validate=必须为TEXT、STEP +test_case_priority_validate=必须为P0、P1、P2、P3 +test_case_method_validate=必须为manual、auto +test_case_name=用例名称 +test_case_type=用例类型 +test_case_maintainer=维护人 +test_case_priority=用例等级 +test_case_method=测试方式 +test_case_prerequisite=前置条件 +test_case_remark=备注 +test_case_step_desc=步骤描述 +test_case_step_result=预期结果 +test_case_module=所属模块 +test_case=功能用例 +user=用户 +user_import_template_name=用户导入模板 +user_import_template_sheet=模版 +user_import_format_wrong=格式错误 +user_import_id_is_repeat=ID重复 +user_import_email_is_repeat=E-mail重复 +user_import_password_format_wrong=密码格式错误 +user_import_phone_format_wrong=手机号码格式错误 +user_import_email_format_wrong=电子邮箱格式错误 +user_import_organization_not_fond=组织未找到 +user_import_workspace_not_fond=工作空间未找到 +org_admin=组织管理员 +org_member=组织成员 +test_manager=测试经理 +tester=测试成员 +read_only_user=只读用户 +module=模块 +num_needed_modify_testcase=修改用例时ID必填 +num_needless_create_testcase=创建用例时无需ID +tag_tip_pattern=标签之间以分号或者逗号隔开 +preconditions_optional=前置条件选填 +remark_optional=备注选填 +do_not_modify_header_order=请勿修改表头顺序 +module_created_automatically=若无该模块将自动创建 +options=选项 +options_yes=是 +options_no=否 +required=必填 +password_format_is_incorrect=有效密码:8-30位,英文大小写字母+数字+特殊字符(可选) +please_input_project_member=请填写该项目下的相关人员ID +test_case_report_template_repeat=同一工作空间下不能存在同名模版 +plan_name_already_exists=测试计划名称已存在 +test_case_already_exists_excel=文件中存在多条相同用例 +test_case_module_already_exists=同层级下已存在该模块名称 +api_test_name_already_exists=测试名称已经存在 +functional_method_tip=功能测试不支持自动方式 +custom_num_is_exist=用例自定义ID已存在 +custom_num_is_not_exist=用例自定义ID不存在 +id_required=ID必填 +id_repeat_in_table=表格内ID重复 +step_model_tip=步骤描述填写 STEP,文本描述请填写 TEXT (非必填) +case_status_not_exist=用例状态必须为未开始(Prepare)、进行中(Underway)、已完成(Completed) +issue_project_not_exist=ID不存在或其它错误 +tapd_project_not_exist=关联的TAPD项目ID不存在 +zentao_get_project_builds_fail=获取影响版本错误 +zentao_project_id_not_exist=关联的禅道ID不存在或其它错误 +#ldap +ldap_url_is_null=LDAP地址为空 +ldap_dn_is_null=LDAP绑定DN为空 +ldap_ou_is_null=LDAP参数OU为空 +ldap_password_is_null=LDAP密码为空 +ldap_connect_fail=连接LDAP失败 +ldap_connect_fail_user=连接LDAP失败,绑定的DN或密码错误 +ldap_user_filter_is_null=LDAP用户过滤器为空 +ldap_user_mapping_is_null=LDAP用户属性映射为空 +authentication_failed=用户认证失败,用户名或密码错误 +user_not_found_or_not_unique=用户不存在或者不唯一 +find_more_user=查找到多个用户 +ldap_authentication_not_enabled=LDAP认证未启用 +login_fail_email_null=登录失败,用户邮箱为空 +login_fail_ou_error=登录失败,请检查用户OU +login_fail_filter_error=登录失败,请检查用户过滤器 +check_ldap_mapping=检查LDAP属性映射 +ldap_mapping_value_null=LDAP用户属性映射字段为空值 +oauth_mapping_config_error=OAuth2属性映射配置错误 +oauth_mapping_value_null=OAuth2用户属性映射字段为空值 +#quota +quota_project_excess_ws_api=项目的接口测试数量总和不能超过工作空间的配额 +quota_project_excess_ws_performance=项目的性能测试数量总和不能超过工作空间的配额 +quota_project_excess_ws_max_threads=项目的最大并发数不能超过工作空间的配额 +quota_project_excess_ws_max_duration=项目的压测时长不能超过工作空间的配额 +quota_project_excess_ws_resource_pool=项目的资源池不能超过工作空间的资源池范围 +quota_project_excess_ws_vum_total=项目的总vum数量总和不能超过工作空间配额 +quota_vum_used_gt_vum_total=总vum数量不能小于已消耗的vum数量 +quota_api_excess_workspace=接口测试数量超过工作空间限额 +quota_api_excess_project=接口测试数量超过项目限额 +quota_performance_excess_workspace=性能测试数量超过工作空间限额 +quota_performance_excess_project=性能测试数量超过项目限额 +quota_max_threads_excess_workspace=最大并发数超过工作空间限额 +quota_max_threads_excess_project=最大并发数超过项目限额 +quota_duration_excess_workspace=压测时长超过工作空间限额 +quota_duration_excess_project=压测时长超过项目限额 +quota_member_excess_workspace=成员数超过工作空间配额 +quota_member_excess_project=成员数超过项目配额 +quota_project_excess_project=项目数超过工作空间配额 +quota_vum_used_excess_workspace=消耗的vum数量超过工作空间配额 +quota_vum_used_excess_project=消耗的vum数量超过项目配额 +import_xmind_count_error=思维导图导入用例数量不能超过 800 条 +license_valid_license_error=授权认证失败 +import_xmind_not_found=未找到测试用例 +test_review_task_notice=测试评审任务通知 +swagger_url_scheduled_import_notification=swagger_url定时导入通知 +test_track.length_less_than=标题过长,字数必须小于 +# check owner +check_owner_project=当前用户没有操作此项目的权限 +check_owner_test=当前用户没有操作此测试的权限 +check_owner_case=当前用户没有操作此用例的权限 +check_owner_plan=当前用户没有操作此计划的权限 +check_owner_review=当前用户没有操作此评审的权限 +check_owner_comment=当前用户没有操作此评论的权限 +check_owner_workspace=当前用户没有操作此工作空间的权限 +upload_content_is_null=导入内容为空 +test_plan_notification=测试计划通知 +task_defect_notification=缺陷任务通知 +task_notification_=定时任务结果通知 +api_definition_url_not_repeating=接口请求地址已经存在 +api_definition_name_not_repeating=相同的名称-url组合已存在 +task_notification_jenkins=jenkins任务通知 +task_notification=任务通知 +message_task_already_exists=任务接收人已经存在 +#automation +automation_name_already_exists=同一个项目的同一模块下,场景名称不能重复 +automation_exec_info=没有测试步骤,无法执行 +delete_check_reference_by=被场景引用 +not_execute=未执行 +execute_not_pass=未通过 +execute_pass=通过 +import_fail_custom_num_exists=导入失败,自定义ID已存在 +#authsource +authsource_name_already_exists=认证源名称已经存在 +authsource_name_is_null=认证源名称不能为空 +authsource_configuration_is_null=认证源配置不能为空 +custom_field_already=工作空间下已存在该字段: +template_already=工作空间下已存在该模板: +expect_name_exists=预期名称已存在 +ssl_password_error=认证密码错误,请重新输入密码 +ssl_file_error=认证文件加载失败,请检查认证文件 +#log +api_definition=接口定义 +api_definition_case=接口定义用例 +api_automation=接口自动化 +api_automation_schedule=接口自动化-定时任务 +api_automation_report=测试报告 +track_test_case=测试用例 +track_test_case_review=用例评审 +track_test_plan=测试计划 +track_test_plan_schedule=测试计划-定时任务 +track_bug=缺陷管理 +track_report=报告 +performance_test=性能测试 +performance_test_report=性能测试报告 +system_user=系统-用户 +system_organization=系统-组织 +system_workspace=工作空间 +system_test_resource=系统-测试资源池 +system_parameter_setting=系统-系统参数设置 +system_quota_management=系统-配额管理 +system_authorization_management=系统-授权管理 +organization_member=组织-成员 +organization_workspace=组织-工作空间 +workspace_service_integration=工作空间-服务集成 +workspace_message_settings=工作空间-消息设置 +workspace_member=工作空间-成员 +workspace_template_settings_field=工作空间-模版设置-自定义字段 +workspace_template_settings_case=工作空间-模版设置-用例模版 +workspace_template_settings_issue=工作空间-模版设置-缺陷模版 +project_project_manager=项目-项目管理 +project_project_member=项目-成员 +project_project_jar=項目-JAR包管理 +project_environment_setting=项目-环境设置 +project_file_management=项目-文件管理 +personal_information_personal_settings=个人信息-个人设置 +personal_information_apikeys=个人信息-API Keys +auth_title=系统认证 +group_permission=用户组与权限 +test_case_status_prepare=未开始 +test_case_status_again=重新提审 +test_case_status_running=进行中 +test_case_status_finished=已完成 +connection_expired=连接已失效,请重新获取 +# track home +api_case=接口用例 +performance_case=性能用例 +scenario_case=场景用例 +scenario_name_is_null=场景名称不能为空 +test_case_status_error=失败 +test_case_status_success=成功 +test_case_status_trash=废弃 +test_case_status_saved=已保存 +create_user=创建人 +test_case_status=用例状态 +id_not_rightful=ID 不合法 +project_reference_multiple_plateform=项目指向多个第三方平台 +# mock +mock_warning=未找到匹配的Mock期望 +zentao_test_type_error=无效的 Zentao 请求 +#项目报告 +enterprise_test_report=项目报告 +count=统计 +cannot_find_project=未找到测试项目 +project_repeatable_is_false=项目未配置URL可重复 +#环境组 +null_environment_group_name=环境组名称不存在 +environment_group_name=环境组名称 +environment_group_exist=已存在 +environment_group_has_duplicate_project=每个项目只能选择一个环境! +#误报库 +error_report_library=误报库 +issue_jira_info_error=请检查服务集成信息或Jira项目ID +error_code_is_unique=错误代码不可重复 +no_version_exists=不存在版本!请先创建项目的版本 +jira_auth_error=账号名或密码(Token)错误 +jira_auth_url_error=测试连接失败,请检查Jira地址是否正确 +#ui 指令校验 +param_error=参数校验失败!请检查 +is_null=不能为空 +url_is_null=URL 参数不能为空 +frame_index_is_null=网页索引号不能为空 +element_is_null=元素对象已经被删除 +locator_is_null=元素定位参数不能有空 +coord=坐标 +input_content=输入内容 +subitem_type=子选项类型 +subitem=子选项值 +varname=变量名 +varname_or_value=变量名或变量值 +attributeName=属性名 +webtitle_varname=网页标题变量名 +webhandle_varname=网页窗口 handle变量名 +cant_be_negative=不能为负数 +expression=表达式 +times=循环次数 +command=步骤 +extract_type=提取信息类型 +cmdValidation=断言 +cmdValidateValue=断言值 +cmdValidateText=弹窗文本 +cmdValidateDropdown=下拉框 +cmdValidateElement=元素断言 +cmdValidateTitle=网页标题 +cmdOpen=打开网页 +cmdSelectWindow=切换窗口 +cmdSetWindowSize=设置窗口大小 +cmdSelectFrame=选择内嵌网页 +cmdDialog=弹窗操作 +cmdDropdownBox=下拉框操作 +submit=提交表单 +cmdSetItem=设置选项 +cmdWaitElement=等待元素 +cmdInput=输入操作 +cmdMouseClick=鼠标点击 +cmdMouseMove=鼠标移动 +cmdMouseDrag=鼠标拖拽 +cmdTimes=次数循环 +cmdForEach=ForEach 循环 +cmdWhile=While 循环 +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=关闭网页 +cmdExtraction=数据提取 +cmdExtractWindow=提取窗口信息 +cmdExtractElement=提取元素信息 +tcp_mock_not_unique=该TCP端口号已被使用 +no_tcp_mock_port=无可用的TCP端口号,请联系管理员 +name_already_exists_in_module=同层级下已经存在 +# issue template copy +target_issue_template_not_checked=无法复制,未选中目标项目 +source_issue_template_is_empty=复制错误,源项目为空 diff --git a/backend/services/test-plan/src/main/resources/i18n/plan_zh_TW.properties b/backend/services/test-plan/src/main/resources/i18n/plan_zh_TW.properties new file mode 100644 index 0000000000..3323dc8c5d --- /dev/null +++ b/backend/services/test-plan/src/main/resources/i18n/plan_zh_TW.properties @@ -0,0 +1,378 @@ +#commons +error_lang_invalid=語言參數錯誤 +file_cannot_be_null=文件不能為空! +cannot_be_null=不能為空 +number=第 +row=行 +error=出錯 +delete_fail=刪除失敗 +start_engine_fail=啟動失敗 +upload_fail=文件上傳失敗 +invalid_parameter=非法的參數 +name_already_exists=該名稱已經存在 +resource_not_exist=資源不存在或已刪除 +upload_file_fail_get_file_path_fail=文件上傳失敗,獲取文件上傳路徑為空 +#user related +user_email_already_exists=用戶郵箱已存在 +user_id_is_null=用戶ID不能為空 +user_name_is_null=用戶名不能為空 +user_email_is_null=用戶郵箱不能為空 +password_is_null=密碼不能為空 +user_id_already_exists=用戶id已存在 +password_modification_failed=舊密碼輸入錯誤,請重新輸入 +cannot_delete_current_user=無法刪除當前登錄用戶 +connection_failed=連接失敗 +connection_timeout=連接超時 +user_already_exists=該用戶已存在於當前成員列表中 +cannot_remove_current=無法移除當前登錄用戶 +login_fail=登錄失敗 +password_is_incorrect=用戶名或密碼不正確 +user_not_exist=用戶不存在: +user_has_been_disabled=用戶已被禁用 +excessive_attempts=操作頻繁 +user_locked=用戶被鎖定 +user_expires=用戶過期 +not_authorized=未經授權 +user_apikey_limit=最多能有5個Api key +please_logout_current_user=請先登出當前用戶 +#load test +edit_load_test_not_found=無法編輯測試,未找到測試: +run_load_test_not_found=無法運行測試,未找到測試: +run_load_test_file_not_found=無法運行測試,無法獲取測試文件元信息,測試ID: +run_load_test_file_content_not_found=無法運行測試,無法獲取測試文件內容,測試ID: +run_load_test_file_init_error=無法運行測試,請前往 [系統設置-系統-系統參數設置] 檢查當前站點配置,詳情見 https://metersphere.io/docs/v2.x/faq/load_test/#url +load_test_is_running=測試正在運行, 請等待 +load_test_kafka_invalid=Kafka 不可用,請檢查配置 +cannot_edit_load_test_running=不能修改正在運行的測試 +test_not_found=測試不存在: +test_not_running=測試未運行 +load_test_already_exists=測試名稱不能重復 +load_test_name_length=測試名稱長度超過限製 +no_nodes_message=沒有節點信息 +duplicate_node_ip=節點 IP 重復 +duplicate_node_port=節點 Port 重復 +duplicate_node_ip_port=節點 IP、Port 重復 +max_thread_insufficient=並發用戶數超額 +related_case_del_fail_prefix=已關聯到 +related_case_del_fail_suffix=測試用例,請先解除關聯 +jmx_content_valid=JMX 內容無效,請檢查 +container_delete_fail=容器由於網絡原因停止失敗,請重試 +load_test_report_file_not_exist=當前報告沒有JTL文件,請等待或重新執行以便獲取 +#workspace +workspace_name_is_null=工作空間名不能為空 +workspace_name_already_exists=工作空間名已存在 +workspace_does_not_belong_to_user=當前工作空間不屬於當前用戶 +workspace_not_exists=工作空間不存在 +#test resource pool +test_resource_pool_id_is_null=資源池ID不能為空 +test_resource_pool_name_is_null=資源池名稱不能為空 +test_resource_pool_name_already_exists=資源池名稱已存在 +load_test=性能測試 +test_resource_pool_is_use=正在使用此資源池,無法刪除 +only_one_k8s=只能添加一個 K8S +test_resource_pool_not_exists=測試資源池不存在 +test_resource_pool_invalid=當前測試使用的資源池處於禁用狀態 +#project +project_name_is_null=項目名稱不能為空 +project_name_already_exists=項目名稱已存在 +project_file_already_exists=項目下該文件已經存在 +project_file_in_use=占用文件,無法刪除。 +#organization +organization_name_is_null=組織名不能為空 +organization_name_already_exists=組織名已存在 +organization_does_not_belong_to_user=當前組織不屬於當前用戶 +organization_id_is_null=組織 ID 不能為空 +#api +api_load_script_error=讀取腳本失敗 +illegal_xml_format=不合法的 XML 格式 +api_report_is_null="測試報告是未生成,無法更新" +api_test_environment_already_exists="已存在該名稱的環境配置" +api_test=接口測試 +#test case +test_case_node_level=層 +test_case_node_level_tip=模塊樹最大深度為 +test_case_module_not_null=所屬模塊不能為空 +test_case_create_module_fail=創建模塊失敗 +test_case_import_template_name=測試用例模版 +test_case_import_template_sheet=模版 +module_not_null=所屬模塊不能為空格 +user_not_exists=該項目下無該用戶 +test_case_already_exists=該項目下已存在該測試用例 +parse_data_error=解析數據出錯 +missing_header_information=缺少頭部信息 +test_case_exist=該項目下已存在用例: +node_deep_limit=節點深度不超過8層! +before_delete_plan=該計劃下存在關聯測試用例,請先取消關聯! +incorrect_format=格式錯誤 +test_case_step_model_validate=必須為TEXT、STEP +test_case_priority_validate=必須為P0、P1、P2、P3 +test_case_method_validate=必須為manual、auto +test_case_name=用例名稱 +test_case_type=用例類型 +test_case_maintainer=維護人 +test_case_priority=用例等級 +test_case_method=測試方式 +test_case_prerequisite=前置條件 +test_case_remark=備註 +test_case_step_desc=步驟描述 +test_case_step_result=預期結果 +test_case_module=所屬模塊 +test_case=功能用例 +user=用戶 +user_import_template_name=用戶導入模板 +user_import_template_sheet=模版 +user_import_format_wrong=格式錯誤 +user_import_id_is_repeat=ID重復 +user_import_email_is_repeat=E-mail重復 +user_import_password_format_wrong=密碼格式錯誤 +user_import_phone_format_wrong=手機號碼格式錯誤 +user_import_email_format_wrong=電子郵箱格式錯誤 +user_import_organization_not_fond=組織未找到 +user_import_workspace_not_fond=工作空間未找到 +org_admin=組織管理員 +org_member=組織成員 +test_manager=測試經理 +tester=測試成員 +read_only_user=只讀用戶 +module=模塊 +num_needed_modify_testcase=修改用例時ID必填 +num_needless_create_testcase=創建用例時無需ID +tag_tip_pattern=標簽之間以分號或者逗號隔開 +preconditions_optional=前置條件選填 +remark_optional=備註選填 +do_not_modify_header_order=請勿修改表頭順序 +module_created_automatically=若無該模塊將自動創建 +options=選項 +options_yes=是 +options_no=否 +required=必填 +password_format_is_incorrect=有效密碼:8-30位,英文大小寫字母+數字+特殊字符(可選) +please_input_project_member=請填寫該項目下的相關人員ID +test_case_report_template_repeat=同一工作空間下不能存在同名模版 +plan_name_already_exists=測試計劃名稱已存在 +test_case_already_exists_excel=文件中存在多條相同用例 +test_case_module_already_exists=同層級下已存在該模塊名稱 +api_test_name_already_exists=測試名稱已經存在 +functional_method_tip=功能測試不支持自動方式 +custom_num_is_exist=用例自定義ID已存在 +custom_num_is_not_exist=用例自定義ID不存在 +id_required=ID必填 +id_repeat_in_table=表格內ID重復 +step_model_tip=步驟描述填寫 STEP,文本描述請填寫 TEXT (非必填) +case_status_not_exist=用例狀態必須為未開始(Prepare)、進行中(Underway)、已完成(Completed) +issue_project_not_exist=ID不存在或其它錯誤 +tapd_project_not_exist=關聯的TAPD項目ID不存在 +zentao_get_project_builds_fail=獲取影響版本錯誤 +zentao_project_id_not_exist=關聯的禪道ID不存在或其它錯誤 +#ldap +ldap_url_is_null=LDAP地址為空 +ldap_dn_is_null=LDAP綁定DN為空 +ldap_ou_is_null=LDAP參數OU為空 +ldap_password_is_null=LDAP密碼為空 +ldap_connect_fail=連接LDAP失敗 +ldap_connect_fail_user=連接LDAP失敗,綁定的DN或密碼錯誤 +ldap_user_filter_is_null=LDAP用戶過濾器為空 +ldap_user_mapping_is_null=LDAP用戶屬性映射為空 +authentication_failed=用戶認證失敗,用戶名或密碼錯誤 +user_not_found_or_not_unique=用戶不存在或者不唯一 +find_more_user=查找到多個用戶 +ldap_authentication_not_enabled=LDAP認證未啟用 +login_fail_email_null=登錄失敗,用戶郵箱為空 +login_fail_ou_error=登錄失敗,請檢查用戶OU +login_fail_filter_error=登錄失敗,請檢查用戶過濾器 +check_ldap_mapping=檢查LDAP屬性映射 +ldap_mapping_value_null=LDAP用戶屬性映射字段為空值 +oauth_mapping_config_error=OAuth2屬性映射配置錯誤 +oauth_mapping_value_null=OAuth2用戶屬性映射字段為空值 +#quota +quota_project_excess_ws_api=項目的接口測試數量總和不能超過工作空間的配額 +quota_project_excess_ws_performance=項目的性能測試數量總和不能超過工作空間的配額 +quota_project_excess_ws_max_threads=項目的最大並發數不能超過工作空間的配額 +quota_project_excess_ws_max_duration=項目的壓測時長不能超過工作空間的配額 +quota_project_excess_ws_resource_pool=項目的資源池不能超過工作空間的資源池範圍 +quota_project_excess_ws_vum_total=項目的總vum數量總和不能超過工作空間配額 +quota_api_excess_workspace=接口測試數量超過工作空間限額 +quota_vum_used_gt_vum_total=總vum數量不能小於已消耗的vum數量 +quota_api_excess_project=接口測試數量超過項目限額 +quota_performance_excess_workspace=性能測試數量超過工作空間限額 +quota_performance_excess_project=性能測試數量超過項目限額 +quota_max_threads_excess_workspace=最大並發數超過工作空間限額 +quota_max_threads_excess_project=最大並發數超過項目限額 +quota_duration_excess_project=壓測時長超過項目限額 +quota_member_excess_workspace=成員數超過工作空間配額 +quota_member_excess_project=成員數超過項目配額 +quota_project_excess_project=項目數超過工作空間配額 +quota_vum_used_excess_workspace=消耗的vum數量超過工作空間配額 +quota_vum_used_excess_project=消耗的vum數量超過項目配額 +import_xmind_count_error=思維導圖導入用例數量不能超過 800 條 +license_valid_license_error=授權認證失敗 +import_xmind_not_found=未找到測試用例 +test_review_task_notice=測試評審任務通知 +swagger_url_scheduled_import_notification=swagger_url定時導入通知 +test_track.length_less_than=標題過長,字數必須小於 +# check owner +check_owner_project=當前用戶沒有操作此項目的權限 +check_owner_test=當前用戶沒有操作此測試的權限 +check_owner_case=當前用戶沒有操作此用例的權限 +check_owner_plan=當前用戶沒有操作此計劃的權限 +check_owner_review=當前用戶沒有操作此評審的權限 +check_owner_comment=當前用戶沒有操作此評論的權限 +check_owner_workspace=當前用戶沒有操作此工作空間的權限 +upload_content_is_null=導入內容為空 +test_plan_notification=測試計劃通知 +task_defect_notification=缺陷任務通知 +task_notification_=定時任務結果通知 +api_definition_url_not_repeating=接口請求地址已經存在 +api_definition_name_not_repeating=相同的名稱-url組合已存在 +task_notification_jenkins=jenkins任務通知 +task_notification=任務通知 +message_task_already_exists=任務接收人已經存在 +#automation +automation_name_already_exists=同一個項目同一模塊下,場景名稱不能重復 +automation_exec_info=沒有測試步驟,無法執行 +delete_check_reference_by=被場景引用 +not_execute=未執行 +execute_not_pass=未通過 +execute_pass=通過 +import_fail_custom_num_exists=導入失敗,自定義ID已存在 +#authsource +authsource_name_already_exists=認證源名稱已經存在 +authsource_name_is_null=認證源名稱不能為空 +authsource_configuration_is_null=認證源配置不能為空 +custom_field_already=工作空間下已存在該字段: +template_already=工作空間下已存在該模板: +expect_name_exists=預期名稱已存在 +ssl_password_error=認證密碼錯誤,請重新輸入密碼 +ssl_file_error=認證文件加載失敗,請檢查認證文件 +#log +api_definition=接口定義 +api_definition_case=接口定義用例 +api_automation=接口自動化 +api_automation_schedule=接口自動化-定時任務 +api_automation_report=測試報告 +track_test_case=測試用例 +track_test_case_review=用例評審 +track_test_plan=測試計劃 +track_test_plan_schedule=測試計劃-定時任務 +track_bug=缺陷管理 +track_report=報告 +performance_test=性能測試 +performance_test_report=性能測試報告 +system_user=系統-用戶 +system_organization=系統-組織 +system_workspace=工作空間 +system_test_resource=系統-測試資源池 +system_parameter_setting=系統-系統參數設置 +system_quota_management=系統-配額管理 +system_authorization_management=系統-授權管理 +organization_member=組織-成員 +organization_workspace=組織-工作空間 +workspace_service_integration=工作空間-服務集成 +workspace_message_settings=工作空間-消息設置 +workspace_member=工作空間-成員 +workspace_template_settings_field=工作空間-模版設置-自定義字段 +workspace_template_settings_case=工作空間-模版設置-用例模版 +workspace_template_settings_issue=工作空間-模版設置-缺陷模版 +project_project_manager=項目-項目管理 +project_project_member=項目-成員 +project_project_jar=項目-JAR包管理 +project_environment_setting=項目-環境設置 +project_file_management=項目-文件管理 +personal_information_personal_settings=個人信息-個人設置 +personal_information_apikeys=個人信息-API Keys +auth_title=系統認證 +group_permission=用戶組與權限 +test_case_status_prepare=未開始 +test_case_status_again=重新提審 +test_case_status_running=進行中 +test_case_status_finished=已完成 +connection_expired=連接已失效,請重新獲取 +# track home +api_case=接口用例 +performance_case=性能用例 +scenario_case=場景用例 +scenario_name_is_null=場景名稱不能為空 +test_case_status_error=失敗 +test_case_status_success=成功 +test_case_status_trash=廢棄 +test_case_status_saved=已保存 +create_user=創建人 +test_case_status=用例狀態 +id_not_rightful=ID 不合法 +project_reference_multiple_plateform=項目指向多個第三方平臺 +# mock +mock_warning=未找到匹配的Mock期望 +zentao_test_type_error=請求方式錯誤 +#项目报告 +enterprise_test_report=項目報告 +count=統計 +cannot_find_project=未找到測試項目 +project_repeatable_is_false=項目未配置URL可重複 +#环境组 +null_environment_group_name=環境組名稱不存在 +environment_group_name=環境組名稱 +environment_group_exist=已存在 +environment_group_has_duplicate_project=每個項目只能選擇一個環境! +#误报库 +error_report_library=誤報庫 +issue_jira_info_error=請檢查服務集成信息或Jira項目ID +error_code_is_unique=錯誤代碼不可重複 +no_version_exists=不存在版本!請先創建項目的版本 +jira_auth_error=賬號名或密碼(Token)錯誤 +jira_auth_url_error=測試連接失敗,請檢查Jira地址是否正確 +#ui 指令校驗 +param_error=參數校驗失敗!請檢查 +is_null=不能為空 +url_is_null=URL 參數不能為空 +frame_index_is_null=網頁索引號不能為空 +element_is_null=元素對象已經被刪除 +locator_is_null=元素定位參數不能有空 +coord=坐標 +input_content=輸入內容 +subitem_type=子選項類型 +subitem=子選項值 +varname=變量名 +varname_or_value=變量名或變量值 +attributeName=屬性名 +webtitle_varname=網頁標題變量名 +webhandle_varname=網頁窗口 handle變量名 +cant_be_negative=不能為負數 +expression=表達式 +times=循環次數 +command=步驟 +extract_type=提取信息類型 +cmdValidation=斷言 +cmdValidateValue=斷言值 +cmdValidateText=彈窗文本 +cmdValidateDropdown=下拉框 +cmdValidateElement=元素斷言 +cmdValidateTitle=網頁標題 +cmdOpen=打開網頁 +cmdSelectWindow=切換窗口 +cmdSetWindowSize=設置窗口大小 +cmdSelectFrame=選擇內嵌網頁 +cmdDialog=彈窗操作 +cmdDropdownBox=下拉框操作 +submit=提交表單 +cmdSetItem=設置選項 +cmdWaitElement=等待元素 +cmdInput=輸入操作 +cmdMouseClick=鼠標點擊 +cmdMouseMove=鼠標移動 +cmdMouseDrag=鼠標拖拽 +cmdTimes=次數循環 +cmdForEach=ForEach 循環 +cmdWhile=While 循環 +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=關閉網頁 +cmdExtraction=數據提取 +cmdExtractWindow=提取窗口信息 +cmdExtractElement=提取元素信息 +tcp_mock_not_unique=該TCP端口號已被使用 +no_tcp_mock_port=無可用的TCP端口號,請聯繫管理員 +name_already_exists_in_module=同層級下已存在 +# issue template copy +target_issue_template_not_checked=無法複製,未選中目標項目 +source_issue_template_is_empty=複製錯誤,源項目為空 diff --git a/backend/services/test-track/pom.xml b/backend/services/test-track/pom.xml new file mode 100644 index 0000000000..54b041326f --- /dev/null +++ b/backend/services/test-track/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + test-track + ${revision} + test-track + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/test-track/src/main/java/io/metersphere/track/domain/TestCase.java b/backend/services/test-track/src/main/java/io/metersphere/track/domain/TestCase.java new file mode 100644 index 0000000000..3ab5d7c0a5 --- /dev/null +++ b/backend/services/test-track/src/main/java/io/metersphere/track/domain/TestCase.java @@ -0,0 +1,72 @@ +package io.metersphere.track.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TestCase implements Serializable { + private String id; + + private String nodeId; + + private String testId; + + private String nodePath; + + private String projectId; + + private String name; + + private String type; + + private String maintainer; + + private String priority; + + private String method; + + private Long createTime; + + private Long updateTime; + + private Integer sort; + + private Integer num; + + private String reviewStatus; + + private String tags; + + private String demandId; + + private String demandName; + + private String status; + + private String stepModel; + + private String customNum; + + private String createUser; + + private String originalStatus; + + private Long deleteTime; + + private String deleteUserId; + + private Long order; + + private Boolean casePublic; + + private String versionId; + + private String refId; + + private Boolean latest; + + private String lastExecuteResult; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/backend/services/test-track/src/main/resources/i18n/track.properties b/backend/services/test-track/src/main/resources/i18n/track.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/test-track/src/main/resources/i18n/track_en_US.properties b/backend/services/test-track/src/main/resources/i18n/track_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/test-track/src/main/resources/i18n/track_zh_CN.properties b/backend/services/test-track/src/main/resources/i18n/track_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/test-track/src/main/resources/i18n/track_zh_TW.properties b/backend/services/test-track/src/main/resources/i18n/track_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/framework/xpack-interface/pom.xml b/backend/services/ui-test/pom.xml similarity index 86% rename from backend/framework/xpack-interface/pom.xml rename to backend/services/ui-test/pom.xml index ecdf1a3e9e..fe1180d66e 100644 --- a/backend/framework/xpack-interface/pom.xml +++ b/backend/services/ui-test/pom.xml @@ -2,21 +2,23 @@ 4.0.0 - io.metersphere - framework + services ${revision} - - xpack-interface - + ui-test + ${revision} + ui-test + + io.metersphere sdk ${revision} + @@ -40,6 +42,9 @@ false + + + diff --git a/backend/services/ui-test/src/main/java/io/metersphere/ui/domain/UiScenario.java b/backend/services/ui-test/src/main/java/io/metersphere/ui/domain/UiScenario.java new file mode 100644 index 0000000000..9a01f7a350 --- /dev/null +++ b/backend/services/ui-test/src/main/java/io/metersphere/ui/domain/UiScenario.java @@ -0,0 +1,74 @@ +package io.metersphere.ui.domain; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UiScenario implements Serializable { + private String id; + + private String projectId; + + private String tags; + + private String userId; + + private String moduleId; + + private String modulePath; + + private String name; + + private String scenarioType; + + private String level; + + private String status; + + private String principal; + + private Integer stepTotal; + + private String schedule; + + private Long createTime; + + private Long updateTime; + + private String passRate; + + private String lastResult; + + private String reportId; + + private Integer num; + + private String originalState; + + private String customNum; + + private String createUser; + + private Integer version; + + private Long deleteTime; + + private String deleteUserId; + + private Integer executeTimes; + + private Long order; + + private String environmentType; + + private String environmentGroupId; + + private String versionId; + + private String refId; + + private Boolean latest; + + private static final long serialVersionUID = 1L; +} diff --git a/backend/services/ui-test/src/main/resources/i18n/ui.properties b/backend/services/ui-test/src/main/resources/i18n/ui.properties new file mode 100644 index 0000000000..87d88014b4 --- /dev/null +++ b/backend/services/ui-test/src/main/resources/i18n/ui.properties @@ -0,0 +1,74 @@ +test_case_exist= +before_delete_plan= +test_case_node_level_tip= +test_case_node_level= +test_case_module_not_null= +test_case_create_module_fail= +test_case_import_template_name= +test_case_import_template_sheet= +module_not_null= +user_not_exists= +test_case_already_exists= +parse_data_error= +missing_header_information= +number= +row= +error= +incorrect_format= +test_case_priority_validate= +test_case_method_validate= +test_case_name= +test_case_module= +test_case_type= +test_case_maintainer= +test_case_priority= +test_case_method= +test_case_prerequisite= +test_case_remark= +test_case_step_desc= +test_case_step_result= +test_case= +user= +user_import_template_name= +user_import_template_sheet= +user_import_format_wrong= +user_import_id_is_repeat= +user_import_email_is_repeat= +user_import_password_format_wrong= +user_import_phone_format_wrong= +user_import_email_format_wrong= +user_import_organization_not_fond= +user_import_workspace_not_fond= +org_admin= +org_member= +test_manager= +tester= +read_only_user= +module= +preconditions_optional= +remark_optional= +do_not_modify_header_order= +module_created_automatically= +options= +options_yes= +options_no= +required= +password_format_is_incorrect= +please_input_workspace_member= +test_case_report_template_repeat= +custom_field_already= +id_required= +id_repeat_in_table= +template_already= +expect_name_exists= +id_not_rightful= +mock_warning= +invalid_parameter= +workspace_template_settings_issue= +zentao_test_type_error= +issue_jira_info_error= +case_status_not_exist= +jira_auth_error= +# issue template copy +target_issue_template_not_checked= +source_issue_template_is_empty= diff --git a/backend/services/ui-test/src/main/resources/i18n/ui_en_US.properties b/backend/services/ui-test/src/main/resources/i18n/ui_en_US.properties new file mode 100644 index 0000000000..f07b1c41cc --- /dev/null +++ b/backend/services/ui-test/src/main/resources/i18n/ui_en_US.properties @@ -0,0 +1,382 @@ +#commons +error_lang_invalid=Invalid language parameter +file_cannot_be_null=File cannot be empty! +cannot_be_null=\tCannot be empty +number=Number +row=row +error=error +connection_failed=Connection failed +connection_timeout=Connection timeout +delete_fail=Delete fail +start_engine_fail=Start fail +upload_fail=Upload fail +invalid_parameter=Invalid parameter! +name_already_exists=Name already exists +resource_not_exist=The resource does not exist or has been deleted +upload_file_fail_get_file_path_fail=Failed to upload the file, failed to get the file path +#user related +user_email_already_exists=User email already exists +user_id_is_null=User ID cannot be null +user_name_is_null=User name cannot be null +user_email_is_null=User email cannot be null +password_is_null=Password cannot be null +user_id_already_exists=User ID already exists +password_modification_failed=The old password is wrong. Please re-enter it +cannot_delete_current_user=Cannot delete the user currently logged in +user_already_exists=The user already exists in the current member list +cannot_remove_current=Unable to remove the currently logged in user +password_is_incorrect=Incorrect password or username +user_not_exist=user does not exist: +user_has_been_disabled=the user has been disabled. +excessive_attempts=Excessive attempts +user_locked=the user has been locked. +user_expires=user expires. +not_authorized=not authorized. +login_fail=Login fail +user_apikey_limit=Can have up to 5 api keys +please_logout_current_user=Please logout current user first +#load test +edit_load_test_not_found=Cannot edit test, test not found= +run_load_test_not_found=Cannot run test, test not found= +run_load_test_file_not_found=Unable to run test, unable to get test file meta information, test ID= +run_load_test_file_content_not_found=Cannot run test, cannot get test file content, test ID= +run_load_test_file_init_error=Failed to run the test, please go to [Settings-System-System Parameter Setting] to check the current site configuration. For details, see https://metersphere.io/docs/faq/load_ test/#url +load_test_is_running=Load test is running, please wait. +load_test_kafka_invalid=Kafka is not available, please check the configuration +cannot_edit_load_test_running=Cannot modify the running test +test_not_found=Test cannot be found: +test_not_running=Test is not running +load_test_already_exists=Duplicate load test name +load_test_name_length=The length of the test name exceeds the limit +no_nodes_message=No node message +duplicate_node_ip=Duplicate IPs +duplicate_node_port=Duplicate Ports +duplicate_node_ip_port=Duplicate IPs & Ports +max_thread_insufficient=The number of concurrent users exceeds +related_case_del_fail_prefix=Connected to +related_case_del_fail_suffix=TestCase, please disassociate first +jmx_content_valid=JMX content is invalid +container_delete_fail=The container failed to stop, please try again +load_test_report_file_not_exist=There is no JTL file in the current report, please wait or execute it again to get it +#workspace +workspace_name_is_null=Workspace name cannot be null +workspace_name_already_exists=The workspace name already exists +workspace_does_not_belong_to_user=The current workspace does not belong to the current user +workspace_not_exists=Workspace is not exists +#test resource pool +test_resource_pool_id_is_null=Test Resource Pool ID cannot be null +test_resource_pool_name_is_null=Test Resource Pool name cannot be null +test_resource_pool_name_already_exists=The test resource pool name already exists +load_test=Load Test +test_resource_pool_is_use=This resource pool is in use and cannot be deleted +only_one_k8s=Only one K8S can be added +test_resource_pool_not_exists=Test resource pool not exists +test_resource_pool_invalid=Test resource pool invalid +#project +project_name_is_null=Project name cannot be null +project_name_already_exists=The project name already exists +project_file_already_exists=The file already exists +project_file_in_use=use this file and cannot be deleted. +#organization +organization_name_is_null=organization name cannot be null +organization_name_already_exists=The organization name already exists +organization_does_not_belong_to_user=The current organization does not belong to the current user +organization_id_is_null=Organization ID cannot be null +#api +api_load_script_error=Load script error +illegal_xml_format=illegal XML format +api_report_is_null="Report is null, can't update" +api_test_environment_already_exists="Api test environment already exists" +api_test=API Test +#test case +test_case_node_level=level +test_case_node_level_tip=The node tree maximum depth is +test_case_module_not_null=The owned module cannot be empty +test_case_create_module_fail=Failed to create module +test_case_import_template_name=Test_case_templates +test_case_import_template_sheet=Template +module_not_null=The module must not be blank +user_not_exists=The user in this project is not exists +test_case_already_exists=The test case in this project is exists +parse_data_error=Parse data error +missing_header_information=Missing header information +test_case_exist=A test case already exists under this project: +node_deep_limit=The node depth does not exceed 8 layers! +before_delete_plan=There is an associated test case under this plan, please unlink it first! +incorrect_format=\tincorrect format +test_case_step_model_validate=\tmust be TEXT, STEP +test_case_priority_validate=\tmust be P0, P1, P2, P3 +test_case_method_validate=\tmust be manual, auto +test_case_name=Name +test_case_type=Type +test_case_maintainer=Maintainer +test_case_priority=Priority +test_case_method=method +test_case_prerequisite=Prerequisite +test_case_remark=Remark +test_case_step_desc=Step description +test_case_step_result=Step result +test_case_module=Module +test_case=Case +user=User +user_import_template_name=User import templates +user_import_template_sheet=templates +user_import_format_wrong=input error +user_import_id_is_repeat=Id repeat +user_import_email_is_repeat=E-mail repeat +user_import_password_format_wrong=Wrong password format +user_import_phone_format_wrong=Wrong phone format +user_import_email_format_wrong=Wrong email format +user_import_organization_not_fond=Organization is not found +user_import_workspace_not_fond=Workspace is not found +org_admin=Organization manager +org_member=Organization member +test_manager=Test manager +tester=Tester +read_only_user=Read-only user +module=Module +num_needed_modify_testcase=ID is needed when modifying testcase +num_needless_create_testcase=ID is needless when creating testcase +tag_tip_pattern=Labels should be separated by semicolons or commas +preconditions_optional=Preconditions optional +remark_optional=Remark optional +do_not_modify_header_order=Do not modify the header order +module_created_automatically=If there is no such module, will be created automatically +options=options +options_yes=Yes +options_no=No +required=Required +password_format_is_incorrect=Valid password: 8-30 digits, English upper and lower case letters + numbers + special characters (optional) +please_input_project_member=Please input project merber's number +test_case_report_template_repeat=The workspace has the same name template +plan_name_already_exists=Test plan name already exists +test_case_already_exists_excel=There are duplicate test cases in the import file +test_case_module_already_exists=The module name already exists at the same level +api_test_name_already_exists=Test name already exists +functional_method_tip=Functional test not support auto method +custom_num_is_exist=Use case custom ID already exists +custom_num_is_not_exist=Use case custom ID not exists +id_required=ID required +id_repeat_in_table=ID is repeat in table +step_model_tip=Step description fill in STEP, text description please fill in TEXT (not required) +case_status_not_exist=The use case status must be Prepare, Underway way and Completed +issue_project_not_exist=ID does not exist or other errors +tapd_project_not_exist=The associated TAPD item ID does not exist +zentao_get_project_builds_fail=Get Affecting Version Errors +zentao_project_id_not_exist=The associated Zen Tao ID does not exist or other errors +#ldap +ldap_url_is_null=LDAP address is empty +ldap_dn_is_null=LDAP binding DN is empty +ldap_ou_is_null=LDAP parameter OU is empty +ldap_password_is_null=LDAP password is empty +ldap_connect_fail=Connection LDAP failed +ldap_connect_fail_user=Connection LDAP failed, wrong DN or password bound +ldap_user_filter_is_null=LDAP user filter is empty +ldap_user_mapping_is_null=LDAP user mapping is empty +authentication_failed=User authentication failed,wrong user name or password +user_not_found_or_not_unique=User does not exist or is not unique +find_more_user=Multiple users found +ldap_authentication_not_enabled=LDAP authentication is not enabled +login_fail_email_null=Login failed, user mailbox is empty +login_fail_ou_error=Login failed, please check the user OU +login_fail_filter_error=Login failed, please check the user filter +check_ldap_mapping=Check LDAP attribute mapping +ldap_mapping_value_null=LDAP user attribute mapping field is empty +oauth_mapping_config_error=OAuth2 attribute mapping misconfiguration +oauth_mapping_value_null=OAuth2 user attribute mapping field is empty +#quota +quota_project_excess_ws_api=The total number of interface tests for a project cannot exceed the workspace quota +quota_project_excess_ws_performance=The total number of performance tests for a project cannot exceed the workspace quota +quota_project_excess_ws_max_threads=The maximum concurrent number of projects cannot exceed the quota of the workspace +quota_project_excess_ws_max_duration=The stress test duration of the project cannot exceed the workspace quota +quota_project_excess_ws_resource_pool=The resource pool of the project cannot exceed the scope of the resource pool of the workspace +quota_project_excess_ws_vum_total=The sum of the total number of vums of the project cannot exceed the workspace quota +quota_vum_used_gt_vum_total=The total number of vum cannot be less than the number of consumed vum +quota_api_excess_workspace=The number of interface tests exceeds the workspace quota +quota_api_excess_project=The number of interface tests exceeds the project limit +quota_performance_excess_workspace=The number of performance tests exceeds the workspace quota +quota_performance_excess_project=The number of performance tests exceeds the project limit +quota_max_threads_excess_workspace=The maximum number of concurrent threads exceeds the workspace quota +quota_max_threads_excess_project=The maximum concurrent number exceeds the project limit +quota_duration_excess_workspace=The stress test duration exceeds the work space quota +quota_duration_excess_project=The stress test time exceeds the project limit +quota_member_excess_workspace=The number of members exceeds the workspace quota +quota_member_excess_project=The number of members exceeds the project quota +quota_project_excess_project=Number of projects exceeds workspace quota +quota_vum_used_excess_workspace=The amount of vum consumed exceeds the workspace quota +quota_vum_used_excess_project=The amount of vum consumed exceeds the project quota +import_xmind_count_error=The number of use cases imported into the mind map cannot exceed 800 +import_xmind_not_found=Test case not found +license_valid_license_error=Authorization authentication failed +test_review_task_notice=Test review task notice +swagger_url_scheduled_import_notification=SwaggerUrl Scheduled import notification +test_track.length_less_than=The title is too long, the length must be less than +# check owner +check_owner_project=The current user does not have permission to operate this project +check_owner_test=The current user does not have permission to operate this test +check_owner_case=The current user does not have permission to operate this use case +check_owner_plan=The current user does not have permission to operate this plan +check_owner_review=The current user does not have permission to operate this review +check_owner_comment=The current user does not have permission to manipulate this comment +check_owner_workspace=The current user does not have permission to operate this workspace +upload_content_is_null=Imported content is empty +test_plan_notification=Test plan notification +task_defect_notification=Task defect notification +task_notification_=Timing task result notification +api_definition_url_not_repeating=The interface request address already exists +api_definition_name_not_repeating=The same name-url combination already exists +task_notification_jenkins=Jenkins Task notification +task_notification=Result notification +message_task_already_exists=Task recipient already exists +#automation +automation_name_already_exists=the scenario already exists in the module of the same project +automation_exec_info=There are no test steps to execute +delete_check_reference_by=be referenced by Scenario +not_execute=Not execute +execute_not_pass=Not pass +execute_pass=Pass +import_fail_custom_num_exists=import fail, custom num is exists +#authsource +authsource_name_already_exists=Authentication source name already exists +authsource_name_is_null=Authentication source name cannot be empty +authsource_configuration_is_null=Authentication source configuration cannot be empty +mobile_phone_number_cannot_be_empty=When the receiving mode is pin and enterprise wechat: the user's mobile phone number cannot be empty +custom_field_already=A feild already exists under this workspace: +template_already=A template already exists under this workspace: +expect_name_exists=Expect name is exists +ssl_password_error=The authentication password is wrong, please re-enter the password +ssl_file_error=Failed to load the certification file, please check the certification file +#log +api_definition=Api definition +api_definition_case=Api definition case +api_automation_schedule=Api automation schedule +api_automation=Api automation +api_automation_report=Test Report +track_test_case=Test case +track_test_case_review=Case review +track_test_plan=Test plan +track_test_plan_schedule=Test plan schedule +track_bug=Defect management +track_report=Report +performance_test=Performance test +performance_test_report=Performance test report +system_user=System user +system_organization=System organization +system_workspace=workspace +system_test_resource=System test resource +system_parameter_setting=System parameter setting +system_quota_management=System Quota management +system_authorization_management=System authorization management +organization_member=Organization member +organization_workspace=Organization workspace +project_project_member=Project member +workspace_service_integration=Workspace service integration +workspace_message_settings=Workspace message settings +workspace_member=Workspace member +workspace_template_settings_field=Workspace template settings field +workspace_template_settings_case=Workspace template settings case +workspace_template_settings_issue=Workspace template settings issue +project_project_manager=Project project manager +project_project_jar=Project project jar +project_environment_setting=Project environment setting +project_file_management=Project file management +personal_information_personal_settings=Personal information personal settings +personal_information_apikeys=Personal information API Keys +auth_title=Auth +group_permission=Group +test_case_status_prepare=Prepare +test_case_status_again=Again +test_case_status_running=Running +test_case_status_finished=Finished +test_case_status_error=Error +test_case_status_success=Success +test_case_status_trash=Trash +test_case_status_saved=Saved +connection_expired=The connection has expired, please get it again +# track home +api_case=Api +performance_case=Performance +scenario_case=Scenario +scenario_name_is_null=Scenario name cannot be empty +create_user=Create user +test_case_status=Case status +id_not_rightful=ID is not rightful +project_reference_multiple_plateform=Projects point to multiple third-party platforms +# mock +mock_warning=No matching Mock expectation was found +zentao_test_type_error=invalid Zentao request +#项目报告 +enterprise_test_report=Enterprise report +count=Count +cannot_find_project=Cannot find project +project_repeatable_is_false=Url repeatable not open +#环境组 +null_environment_group_name=Environment group name is null +environment_group_name=Environment group name +environment_group_exist=already exists +environment_group_has_duplicate_project=Environment group has duplicate project +#误报库 +error_report_library=Error report +issue_jira_info_error=Check the service integration information or Jira project ID +error_code_is_unique=Error code is not unique +no_version_exists=version not exists +jira_auth_error=Account name or password (Token) is wrong +jira_auth_url_error=The test connection failed, please check whether the Jira address is correct +#ui 指令校驗 +param_error=Param Error +is_null=can't be null +url_is_null=URL can't be null +frame_index_is_null=frame index can't be null +element_is_null=element can't be null +locator_is_null=locator can't be null +coord=coord +input_content=input +subitem_type=subitem type +subitem=subitem +varname=variable +varname_or_value=variable or value +attributeName=attribute name +webtitle_varname=title varname +webhandle_varname=handle varname +cant_be_negative=can't be negative +expression=expression +times=times +command=command +extract_type=extract type +cmdValidation=validation +cmdValidateValue=validate value +cmdValidateText=validate text +cmdValidateDropdown=validate dropdown +cmdValidateElement=validate element +cmdValidateTitle=validate title +cmdOpen=open +cmdSelectWindow=select window +cmdSetWindowSize=set window size +cmdSelectFrame=select frame +cmdDialog=dialog operation +cmdDropdownBox=dropdown +submit=submit +cmdSetItem=set item +cmdWaitElement=wait element +cmdInput=input +cmdMouseClick=click +cmdMouseMove=mouse move +cmdMouseDrag=mouse drag +cmdTimes=times +cmdForEach=ForEach +cmdWhile=While +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=close +cmdExtraction=extracion +cmdExtractWindow=window extraction +cmdExtractElement=element extraction +tcp_mock_not_unique=This tcp port is be used +no_tcp_mock_port=No idle tcp port, please contact administrators. +name_already_exists_in_module=Name already exists in same module +repository_module_already_exists=The repository name already exists at the same project +can_not_move_to_repository_node=Can not move to repository node +# issue template copy +target_issue_template_not_checked=Cannot copy, target project not checked +source_issue_template_is_empty=Copy error, source project is empty \ No newline at end of file diff --git a/backend/services/ui-test/src/main/resources/i18n/ui_zh_CN.properties b/backend/services/ui-test/src/main/resources/i18n/ui_zh_CN.properties new file mode 100644 index 0000000000..9bf0e7818d --- /dev/null +++ b/backend/services/ui-test/src/main/resources/i18n/ui_zh_CN.properties @@ -0,0 +1,379 @@ +#commons +error_lang_invalid=语言参数错误 +file_cannot_be_null=文件不能为空! +cannot_be_null=不能为空 +number=第 +row=行 +error=出错 +delete_fail=删除失败 +start_engine_fail=启动失败 +upload_fail=文件上传失败 +invalid_parameter=非法的参数 +name_already_exists=该名称已经存在 +resource_not_exist=资源不存在或已删除 +upload_file_fail_get_file_path_fail=文件上传失败,获取文件上传路径为空 +#user related +user_email_already_exists=用户邮箱已存在 +user_id_is_null=用户ID不能为空 +user_name_is_null=用户名不能为空 +user_email_is_null=用户邮箱不能为空 +password_is_null=密码不能为空 +user_id_already_exists=用户id已存在 +password_modification_failed=旧密码输入错误,请重新输入 +cannot_delete_current_user=无法删除当前登录用户 +connection_failed=连接失败 +connection_timeout=连接超时 +user_already_exists=该用户已存在于当前成员列表中 +cannot_remove_current=无法移除当前登录用户 +login_fail=登录失败 +password_is_incorrect=用户名或密码不正确 +user_not_exist=用户不存在: +user_has_been_disabled=用户已被禁用 +excessive_attempts=操作频繁 +user_locked=用户被锁定 +user_expires=用户过期 +not_authorized=未经授权 +user_apikey_limit=最多能有5个Api key +please_logout_current_user=请先登出当前用户 +#load test +edit_load_test_not_found=无法编辑测试,未找到测试: +run_load_test_not_found=无法运行测试,未找到测试: +run_load_test_file_not_found=无法运行测试,无法获取测试文件元信息,测试ID: +run_load_test_file_content_not_found=无法运行测试,无法获取测试文件内容,测试ID: +run_load_test_file_init_error=无法运行测试,请前往 [系统设置-系统-系统参数设置] 检查当前站点配置,详情见 https://metersphere.io/docs/v2.x/faq/load_test/#url +load_test_is_running=测试正在运行, 请等待 +load_test_kafka_invalid=Kafka 不可用,请检查配置 +cannot_edit_load_test_running=不能修改正在运行的测试 +test_not_found=测试不存在: +test_not_running=测试未运行 +load_test_already_exists=测试名称不能重复 +load_test_name_length=测试名称长度超过限制 +no_nodes_message=没有节点信息 +duplicate_node_ip=节点 IP 重复 +duplicate_node_port=节点 Port 重复 +duplicate_node_ip_port=节点 IP、Port 重复 +max_thread_insufficient=并发用户数超额 +related_case_del_fail_prefix=已关联到 +related_case_del_fail_suffix=测试用例,请先解除关联 +jmx_content_valid=JMX 内容无效,请检查 +container_delete_fail=容器由于网络原因停止失败,请重试 +load_test_report_file_not_exist=当前报告没有JTL文件,请等待或重新执行以便获取 +#workspace +workspace_name_is_null=工作空间名不能为空 +workspace_name_already_exists=工作空间名已存在 +workspace_does_not_belong_to_user=当前工作空间不属于当前用户 +workspace_not_exists=工作空间不存在 +#test resource pool +test_resource_pool_id_is_null=资源池ID不能为空 +test_resource_pool_name_is_null=资源池名称不能为空 +test_resource_pool_name_already_exists=资源池名称已存在 +load_test=性能测试 +test_resource_pool_is_use=正在使用此资源池,无法删除 +only_one_k8s=只能添加一个 K8S +test_resource_pool_not_exists=测试资源池不存在 +test_resource_pool_invalid=当前测试使用的资源池处于禁用状态 +#project +project_name_is_null=项目名称不能为空 +project_name_already_exists=项目名称已存在 +project_file_already_exists=项目下该文件已经存在 +project_file_in_use=占用文件,无法删除。 +#organization +organization_name_is_null=组织名不能为空 +organization_name_already_exists=组织名已存在 +organization_does_not_belong_to_user=当前组织不属于当前用户 +organization_id_is_null=组织 ID 不能为空 +#api +api_load_script_error=读取脚本失败 +illegal_xml_format=不合法的 XML 格式 +api_report_is_null="测试报告是未生成,无法更新" +api_test_environment_already_exists="已存在该名称的环境配置" +api_test=接口测试 +#test case +test_case_node_level=层 +test_case_node_level_tip=模块树最大深度为 +test_case_module_not_null=所属模块不能为空 +test_case_create_module_fail=创建模块失败 +test_case_import_template_name=测试用例模版 +test_case_import_template_sheet=模版 +module_not_null=所属模块不能为空格 +user_not_exists=该项目下无该用户 +test_case_already_exists=该项目下已存在该测试用例 +parse_data_error=解析数据出错 +missing_header_information=缺少头部信息 +test_case_exist=该项目下已存在用例: +node_deep_limit=节点深度不超过8层! +before_delete_plan=该计划下存在关联测试用例,请先取消关联! +incorrect_format=格式错误 +test_case_step_model_validate=必须为TEXT、STEP +test_case_priority_validate=必须为P0、P1、P2、P3 +test_case_method_validate=必须为manual、auto +test_case_name=用例名称 +test_case_type=用例类型 +test_case_maintainer=维护人 +test_case_priority=用例等级 +test_case_method=测试方式 +test_case_prerequisite=前置条件 +test_case_remark=备注 +test_case_step_desc=步骤描述 +test_case_step_result=预期结果 +test_case_module=所属模块 +test_case=功能用例 +user=用户 +user_import_template_name=用户导入模板 +user_import_template_sheet=模版 +user_import_format_wrong=格式错误 +user_import_id_is_repeat=ID重复 +user_import_email_is_repeat=E-mail重复 +user_import_password_format_wrong=密码格式错误 +user_import_phone_format_wrong=手机号码格式错误 +user_import_email_format_wrong=电子邮箱格式错误 +user_import_organization_not_fond=组织未找到 +user_import_workspace_not_fond=工作空间未找到 +org_admin=组织管理员 +org_member=组织成员 +test_manager=测试经理 +tester=测试成员 +read_only_user=只读用户 +module=模块 +num_needed_modify_testcase=修改用例时ID必填 +num_needless_create_testcase=创建用例时无需ID +tag_tip_pattern=标签之间以分号或者逗号隔开 +preconditions_optional=前置条件选填 +remark_optional=备注选填 +do_not_modify_header_order=请勿修改表头顺序 +module_created_automatically=若无该模块将自动创建 +options=选项 +options_yes=是 +options_no=否 +required=必填 +password_format_is_incorrect=有效密码:8-30位,英文大小写字母+数字+特殊字符(可选) +please_input_project_member=请填写该项目下的相关人员ID +test_case_report_template_repeat=同一工作空间下不能存在同名模版 +plan_name_already_exists=测试计划名称已存在 +test_case_already_exists_excel=文件中存在多条相同用例 +test_case_module_already_exists=同层级下已存在该模块名称 +api_test_name_already_exists=测试名称已经存在 +functional_method_tip=功能测试不支持自动方式 +custom_num_is_exist=用例自定义ID已存在 +custom_num_is_not_exist=用例自定义ID不存在 +id_required=ID必填 +id_repeat_in_table=表格内ID重复 +step_model_tip=步骤描述填写 STEP,文本描述请填写 TEXT (非必填) +case_status_not_exist=用例状态必须为未开始(Prepare)、进行中(Underway)、已完成(Completed) +issue_project_not_exist=ID不存在或其它错误 +tapd_project_not_exist=关联的TAPD项目ID不存在 +zentao_get_project_builds_fail=获取影响版本错误 +zentao_project_id_not_exist=关联的禅道ID不存在或其它错误 +#ldap +ldap_url_is_null=LDAP地址为空 +ldap_dn_is_null=LDAP绑定DN为空 +ldap_ou_is_null=LDAP参数OU为空 +ldap_password_is_null=LDAP密码为空 +ldap_connect_fail=连接LDAP失败 +ldap_connect_fail_user=连接LDAP失败,绑定的DN或密码错误 +ldap_user_filter_is_null=LDAP用户过滤器为空 +ldap_user_mapping_is_null=LDAP用户属性映射为空 +authentication_failed=用户认证失败,用户名或密码错误 +user_not_found_or_not_unique=用户不存在或者不唯一 +find_more_user=查找到多个用户 +ldap_authentication_not_enabled=LDAP认证未启用 +login_fail_email_null=登录失败,用户邮箱为空 +login_fail_ou_error=登录失败,请检查用户OU +login_fail_filter_error=登录失败,请检查用户过滤器 +check_ldap_mapping=检查LDAP属性映射 +ldap_mapping_value_null=LDAP用户属性映射字段为空值 +oauth_mapping_config_error=OAuth2属性映射配置错误 +oauth_mapping_value_null=OAuth2用户属性映射字段为空值 +#quota +quota_project_excess_ws_api=项目的接口测试数量总和不能超过工作空间的配额 +quota_project_excess_ws_performance=项目的性能测试数量总和不能超过工作空间的配额 +quota_project_excess_ws_max_threads=项目的最大并发数不能超过工作空间的配额 +quota_project_excess_ws_max_duration=项目的压测时长不能超过工作空间的配额 +quota_project_excess_ws_resource_pool=项目的资源池不能超过工作空间的资源池范围 +quota_project_excess_ws_vum_total=项目的总vum数量总和不能超过工作空间配额 +quota_vum_used_gt_vum_total=总vum数量不能小于已消耗的vum数量 +quota_api_excess_workspace=接口测试数量超过工作空间限额 +quota_api_excess_project=接口测试数量超过项目限额 +quota_performance_excess_workspace=性能测试数量超过工作空间限额 +quota_performance_excess_project=性能测试数量超过项目限额 +quota_max_threads_excess_workspace=最大并发数超过工作空间限额 +quota_max_threads_excess_project=最大并发数超过项目限额 +quota_duration_excess_workspace=压测时长超过工作空间限额 +quota_duration_excess_project=压测时长超过项目限额 +quota_member_excess_workspace=成员数超过工作空间配额 +quota_member_excess_project=成员数超过项目配额 +quota_project_excess_project=项目数超过工作空间配额 +quota_vum_used_excess_workspace=消耗的vum数量超过工作空间配额 +quota_vum_used_excess_project=消耗的vum数量超过项目配额 +import_xmind_count_error=思维导图导入用例数量不能超过 800 条 +license_valid_license_error=授权认证失败 +import_xmind_not_found=未找到测试用例 +test_review_task_notice=测试评审任务通知 +swagger_url_scheduled_import_notification=swagger_url定时导入通知 +test_track.length_less_than=标题过长,字数必须小于 +# check owner +check_owner_project=当前用户没有操作此项目的权限 +check_owner_test=当前用户没有操作此测试的权限 +check_owner_case=当前用户没有操作此用例的权限 +check_owner_plan=当前用户没有操作此计划的权限 +check_owner_review=当前用户没有操作此评审的权限 +check_owner_comment=当前用户没有操作此评论的权限 +check_owner_workspace=当前用户没有操作此工作空间的权限 +upload_content_is_null=导入内容为空 +test_plan_notification=测试计划通知 +task_defect_notification=缺陷任务通知 +task_notification_=定时任务结果通知 +api_definition_url_not_repeating=接口请求地址已经存在 +api_definition_name_not_repeating=相同的名称-url组合已存在 +task_notification_jenkins=jenkins任务通知 +task_notification=任务通知 +message_task_already_exists=任务接收人已经存在 +#automation +automation_name_already_exists=同一个项目的同一模块下,场景名称不能重复 +automation_exec_info=没有测试步骤,无法执行 +delete_check_reference_by=被场景引用 +not_execute=未执行 +execute_not_pass=未通过 +execute_pass=通过 +import_fail_custom_num_exists=导入失败,自定义ID已存在 +#authsource +authsource_name_already_exists=认证源名称已经存在 +authsource_name_is_null=认证源名称不能为空 +authsource_configuration_is_null=认证源配置不能为空 +custom_field_already=工作空间下已存在该字段: +template_already=工作空间下已存在该模板: +expect_name_exists=预期名称已存在 +ssl_password_error=认证密码错误,请重新输入密码 +ssl_file_error=认证文件加载失败,请检查认证文件 +#log +api_definition=接口定义 +api_definition_case=接口定义用例 +api_automation=接口自动化 +api_automation_schedule=接口自动化-定时任务 +api_automation_report=测试报告 +track_test_case=测试用例 +track_test_case_review=用例评审 +track_test_plan=测试计划 +track_test_plan_schedule=测试计划-定时任务 +track_bug=缺陷管理 +track_report=报告 +performance_test=性能测试 +performance_test_report=性能测试报告 +system_user=系统-用户 +system_organization=系统-组织 +system_workspace=工作空间 +system_test_resource=系统-测试资源池 +system_parameter_setting=系统-系统参数设置 +system_quota_management=系统-配额管理 +system_authorization_management=系统-授权管理 +organization_member=组织-成员 +organization_workspace=组织-工作空间 +workspace_service_integration=工作空间-服务集成 +workspace_message_settings=工作空间-消息设置 +workspace_member=工作空间-成员 +workspace_template_settings_field=工作空间-模版设置-自定义字段 +workspace_template_settings_case=工作空间-模版设置-用例模版 +workspace_template_settings_issue=工作空间-模版设置-缺陷模版 +project_project_manager=项目-项目管理 +project_project_member=项目-成员 +project_project_jar=項目-JAR包管理 +project_environment_setting=项目-环境设置 +project_file_management=项目-文件管理 +personal_information_personal_settings=个人信息-个人设置 +personal_information_apikeys=个人信息-API Keys +auth_title=系统认证 +group_permission=用户组与权限 +test_case_status_prepare=未开始 +test_case_status_again=重新提审 +test_case_status_running=进行中 +test_case_status_finished=已完成 +connection_expired=连接已失效,请重新获取 +# track home +api_case=接口用例 +performance_case=性能用例 +scenario_case=场景用例 +scenario_name_is_null=场景名称不能为空 +test_case_status_error=失败 +test_case_status_success=成功 +test_case_status_trash=废弃 +test_case_status_saved=已保存 +create_user=创建人 +test_case_status=用例状态 +id_not_rightful=ID 不合法 +project_reference_multiple_plateform=项目指向多个第三方平台 +# mock +mock_warning=未找到匹配的Mock期望 +zentao_test_type_error=无效的 Zentao 请求 +#项目报告 +enterprise_test_report=项目报告 +count=统计 +cannot_find_project=未找到测试项目 +project_repeatable_is_false=项目未配置URL可重复 +#环境组 +null_environment_group_name=环境组名称不存在 +environment_group_name=环境组名称 +environment_group_exist=已存在 +environment_group_has_duplicate_project=每个项目只能选择一个环境! +#误报库 +error_report_library=误报库 +issue_jira_info_error=请检查服务集成信息或Jira项目ID +error_code_is_unique=错误代码不可重复 +no_version_exists=不存在版本!请先创建项目的版本 +jira_auth_error=账号名或密码(Token)错误 +jira_auth_url_error=测试连接失败,请检查Jira地址是否正确 +#ui 指令校验 +param_error=参数校验失败!请检查 +is_null=不能为空 +url_is_null=URL 参数不能为空 +frame_index_is_null=网页索引号不能为空 +element_is_null=元素对象已经被删除 +locator_is_null=元素定位参数不能有空 +coord=坐标 +input_content=输入内容 +subitem_type=子选项类型 +subitem=子选项值 +varname=变量名 +varname_or_value=变量名或变量值 +attributeName=属性名 +webtitle_varname=网页标题变量名 +webhandle_varname=网页窗口 handle变量名 +cant_be_negative=不能为负数 +expression=表达式 +times=循环次数 +command=步骤 +extract_type=提取信息类型 +cmdValidation=断言 +cmdValidateValue=断言值 +cmdValidateText=弹窗文本 +cmdValidateDropdown=下拉框 +cmdValidateElement=元素断言 +cmdValidateTitle=网页标题 +cmdOpen=打开网页 +cmdSelectWindow=切换窗口 +cmdSetWindowSize=设置窗口大小 +cmdSelectFrame=选择内嵌网页 +cmdDialog=弹窗操作 +cmdDropdownBox=下拉框操作 +submit=提交表单 +cmdSetItem=设置选项 +cmdWaitElement=等待元素 +cmdInput=输入操作 +cmdMouseClick=鼠标点击 +cmdMouseMove=鼠标移动 +cmdMouseDrag=鼠标拖拽 +cmdTimes=次数循环 +cmdForEach=ForEach 循环 +cmdWhile=While 循环 +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=关闭网页 +cmdExtraction=数据提取 +cmdExtractWindow=提取窗口信息 +cmdExtractElement=提取元素信息 +tcp_mock_not_unique=该TCP端口号已被使用 +no_tcp_mock_port=无可用的TCP端口号,请联系管理员 +name_already_exists_in_module=同层级下已经存在 +# issue template copy +target_issue_template_not_checked=无法复制,未选中目标项目 +source_issue_template_is_empty=复制错误,源项目为空 diff --git a/backend/services/ui-test/src/main/resources/i18n/ui_zh_TW.properties b/backend/services/ui-test/src/main/resources/i18n/ui_zh_TW.properties new file mode 100644 index 0000000000..3323dc8c5d --- /dev/null +++ b/backend/services/ui-test/src/main/resources/i18n/ui_zh_TW.properties @@ -0,0 +1,378 @@ +#commons +error_lang_invalid=語言參數錯誤 +file_cannot_be_null=文件不能為空! +cannot_be_null=不能為空 +number=第 +row=行 +error=出錯 +delete_fail=刪除失敗 +start_engine_fail=啟動失敗 +upload_fail=文件上傳失敗 +invalid_parameter=非法的參數 +name_already_exists=該名稱已經存在 +resource_not_exist=資源不存在或已刪除 +upload_file_fail_get_file_path_fail=文件上傳失敗,獲取文件上傳路徑為空 +#user related +user_email_already_exists=用戶郵箱已存在 +user_id_is_null=用戶ID不能為空 +user_name_is_null=用戶名不能為空 +user_email_is_null=用戶郵箱不能為空 +password_is_null=密碼不能為空 +user_id_already_exists=用戶id已存在 +password_modification_failed=舊密碼輸入錯誤,請重新輸入 +cannot_delete_current_user=無法刪除當前登錄用戶 +connection_failed=連接失敗 +connection_timeout=連接超時 +user_already_exists=該用戶已存在於當前成員列表中 +cannot_remove_current=無法移除當前登錄用戶 +login_fail=登錄失敗 +password_is_incorrect=用戶名或密碼不正確 +user_not_exist=用戶不存在: +user_has_been_disabled=用戶已被禁用 +excessive_attempts=操作頻繁 +user_locked=用戶被鎖定 +user_expires=用戶過期 +not_authorized=未經授權 +user_apikey_limit=最多能有5個Api key +please_logout_current_user=請先登出當前用戶 +#load test +edit_load_test_not_found=無法編輯測試,未找到測試: +run_load_test_not_found=無法運行測試,未找到測試: +run_load_test_file_not_found=無法運行測試,無法獲取測試文件元信息,測試ID: +run_load_test_file_content_not_found=無法運行測試,無法獲取測試文件內容,測試ID: +run_load_test_file_init_error=無法運行測試,請前往 [系統設置-系統-系統參數設置] 檢查當前站點配置,詳情見 https://metersphere.io/docs/v2.x/faq/load_test/#url +load_test_is_running=測試正在運行, 請等待 +load_test_kafka_invalid=Kafka 不可用,請檢查配置 +cannot_edit_load_test_running=不能修改正在運行的測試 +test_not_found=測試不存在: +test_not_running=測試未運行 +load_test_already_exists=測試名稱不能重復 +load_test_name_length=測試名稱長度超過限製 +no_nodes_message=沒有節點信息 +duplicate_node_ip=節點 IP 重復 +duplicate_node_port=節點 Port 重復 +duplicate_node_ip_port=節點 IP、Port 重復 +max_thread_insufficient=並發用戶數超額 +related_case_del_fail_prefix=已關聯到 +related_case_del_fail_suffix=測試用例,請先解除關聯 +jmx_content_valid=JMX 內容無效,請檢查 +container_delete_fail=容器由於網絡原因停止失敗,請重試 +load_test_report_file_not_exist=當前報告沒有JTL文件,請等待或重新執行以便獲取 +#workspace +workspace_name_is_null=工作空間名不能為空 +workspace_name_already_exists=工作空間名已存在 +workspace_does_not_belong_to_user=當前工作空間不屬於當前用戶 +workspace_not_exists=工作空間不存在 +#test resource pool +test_resource_pool_id_is_null=資源池ID不能為空 +test_resource_pool_name_is_null=資源池名稱不能為空 +test_resource_pool_name_already_exists=資源池名稱已存在 +load_test=性能測試 +test_resource_pool_is_use=正在使用此資源池,無法刪除 +only_one_k8s=只能添加一個 K8S +test_resource_pool_not_exists=測試資源池不存在 +test_resource_pool_invalid=當前測試使用的資源池處於禁用狀態 +#project +project_name_is_null=項目名稱不能為空 +project_name_already_exists=項目名稱已存在 +project_file_already_exists=項目下該文件已經存在 +project_file_in_use=占用文件,無法刪除。 +#organization +organization_name_is_null=組織名不能為空 +organization_name_already_exists=組織名已存在 +organization_does_not_belong_to_user=當前組織不屬於當前用戶 +organization_id_is_null=組織 ID 不能為空 +#api +api_load_script_error=讀取腳本失敗 +illegal_xml_format=不合法的 XML 格式 +api_report_is_null="測試報告是未生成,無法更新" +api_test_environment_already_exists="已存在該名稱的環境配置" +api_test=接口測試 +#test case +test_case_node_level=層 +test_case_node_level_tip=模塊樹最大深度為 +test_case_module_not_null=所屬模塊不能為空 +test_case_create_module_fail=創建模塊失敗 +test_case_import_template_name=測試用例模版 +test_case_import_template_sheet=模版 +module_not_null=所屬模塊不能為空格 +user_not_exists=該項目下無該用戶 +test_case_already_exists=該項目下已存在該測試用例 +parse_data_error=解析數據出錯 +missing_header_information=缺少頭部信息 +test_case_exist=該項目下已存在用例: +node_deep_limit=節點深度不超過8層! +before_delete_plan=該計劃下存在關聯測試用例,請先取消關聯! +incorrect_format=格式錯誤 +test_case_step_model_validate=必須為TEXT、STEP +test_case_priority_validate=必須為P0、P1、P2、P3 +test_case_method_validate=必須為manual、auto +test_case_name=用例名稱 +test_case_type=用例類型 +test_case_maintainer=維護人 +test_case_priority=用例等級 +test_case_method=測試方式 +test_case_prerequisite=前置條件 +test_case_remark=備註 +test_case_step_desc=步驟描述 +test_case_step_result=預期結果 +test_case_module=所屬模塊 +test_case=功能用例 +user=用戶 +user_import_template_name=用戶導入模板 +user_import_template_sheet=模版 +user_import_format_wrong=格式錯誤 +user_import_id_is_repeat=ID重復 +user_import_email_is_repeat=E-mail重復 +user_import_password_format_wrong=密碼格式錯誤 +user_import_phone_format_wrong=手機號碼格式錯誤 +user_import_email_format_wrong=電子郵箱格式錯誤 +user_import_organization_not_fond=組織未找到 +user_import_workspace_not_fond=工作空間未找到 +org_admin=組織管理員 +org_member=組織成員 +test_manager=測試經理 +tester=測試成員 +read_only_user=只讀用戶 +module=模塊 +num_needed_modify_testcase=修改用例時ID必填 +num_needless_create_testcase=創建用例時無需ID +tag_tip_pattern=標簽之間以分號或者逗號隔開 +preconditions_optional=前置條件選填 +remark_optional=備註選填 +do_not_modify_header_order=請勿修改表頭順序 +module_created_automatically=若無該模塊將自動創建 +options=選項 +options_yes=是 +options_no=否 +required=必填 +password_format_is_incorrect=有效密碼:8-30位,英文大小寫字母+數字+特殊字符(可選) +please_input_project_member=請填寫該項目下的相關人員ID +test_case_report_template_repeat=同一工作空間下不能存在同名模版 +plan_name_already_exists=測試計劃名稱已存在 +test_case_already_exists_excel=文件中存在多條相同用例 +test_case_module_already_exists=同層級下已存在該模塊名稱 +api_test_name_already_exists=測試名稱已經存在 +functional_method_tip=功能測試不支持自動方式 +custom_num_is_exist=用例自定義ID已存在 +custom_num_is_not_exist=用例自定義ID不存在 +id_required=ID必填 +id_repeat_in_table=表格內ID重復 +step_model_tip=步驟描述填寫 STEP,文本描述請填寫 TEXT (非必填) +case_status_not_exist=用例狀態必須為未開始(Prepare)、進行中(Underway)、已完成(Completed) +issue_project_not_exist=ID不存在或其它錯誤 +tapd_project_not_exist=關聯的TAPD項目ID不存在 +zentao_get_project_builds_fail=獲取影響版本錯誤 +zentao_project_id_not_exist=關聯的禪道ID不存在或其它錯誤 +#ldap +ldap_url_is_null=LDAP地址為空 +ldap_dn_is_null=LDAP綁定DN為空 +ldap_ou_is_null=LDAP參數OU為空 +ldap_password_is_null=LDAP密碼為空 +ldap_connect_fail=連接LDAP失敗 +ldap_connect_fail_user=連接LDAP失敗,綁定的DN或密碼錯誤 +ldap_user_filter_is_null=LDAP用戶過濾器為空 +ldap_user_mapping_is_null=LDAP用戶屬性映射為空 +authentication_failed=用戶認證失敗,用戶名或密碼錯誤 +user_not_found_or_not_unique=用戶不存在或者不唯一 +find_more_user=查找到多個用戶 +ldap_authentication_not_enabled=LDAP認證未啟用 +login_fail_email_null=登錄失敗,用戶郵箱為空 +login_fail_ou_error=登錄失敗,請檢查用戶OU +login_fail_filter_error=登錄失敗,請檢查用戶過濾器 +check_ldap_mapping=檢查LDAP屬性映射 +ldap_mapping_value_null=LDAP用戶屬性映射字段為空值 +oauth_mapping_config_error=OAuth2屬性映射配置錯誤 +oauth_mapping_value_null=OAuth2用戶屬性映射字段為空值 +#quota +quota_project_excess_ws_api=項目的接口測試數量總和不能超過工作空間的配額 +quota_project_excess_ws_performance=項目的性能測試數量總和不能超過工作空間的配額 +quota_project_excess_ws_max_threads=項目的最大並發數不能超過工作空間的配額 +quota_project_excess_ws_max_duration=項目的壓測時長不能超過工作空間的配額 +quota_project_excess_ws_resource_pool=項目的資源池不能超過工作空間的資源池範圍 +quota_project_excess_ws_vum_total=項目的總vum數量總和不能超過工作空間配額 +quota_api_excess_workspace=接口測試數量超過工作空間限額 +quota_vum_used_gt_vum_total=總vum數量不能小於已消耗的vum數量 +quota_api_excess_project=接口測試數量超過項目限額 +quota_performance_excess_workspace=性能測試數量超過工作空間限額 +quota_performance_excess_project=性能測試數量超過項目限額 +quota_max_threads_excess_workspace=最大並發數超過工作空間限額 +quota_max_threads_excess_project=最大並發數超過項目限額 +quota_duration_excess_project=壓測時長超過項目限額 +quota_member_excess_workspace=成員數超過工作空間配額 +quota_member_excess_project=成員數超過項目配額 +quota_project_excess_project=項目數超過工作空間配額 +quota_vum_used_excess_workspace=消耗的vum數量超過工作空間配額 +quota_vum_used_excess_project=消耗的vum數量超過項目配額 +import_xmind_count_error=思維導圖導入用例數量不能超過 800 條 +license_valid_license_error=授權認證失敗 +import_xmind_not_found=未找到測試用例 +test_review_task_notice=測試評審任務通知 +swagger_url_scheduled_import_notification=swagger_url定時導入通知 +test_track.length_less_than=標題過長,字數必須小於 +# check owner +check_owner_project=當前用戶沒有操作此項目的權限 +check_owner_test=當前用戶沒有操作此測試的權限 +check_owner_case=當前用戶沒有操作此用例的權限 +check_owner_plan=當前用戶沒有操作此計劃的權限 +check_owner_review=當前用戶沒有操作此評審的權限 +check_owner_comment=當前用戶沒有操作此評論的權限 +check_owner_workspace=當前用戶沒有操作此工作空間的權限 +upload_content_is_null=導入內容為空 +test_plan_notification=測試計劃通知 +task_defect_notification=缺陷任務通知 +task_notification_=定時任務結果通知 +api_definition_url_not_repeating=接口請求地址已經存在 +api_definition_name_not_repeating=相同的名稱-url組合已存在 +task_notification_jenkins=jenkins任務通知 +task_notification=任務通知 +message_task_already_exists=任務接收人已經存在 +#automation +automation_name_already_exists=同一個項目同一模塊下,場景名稱不能重復 +automation_exec_info=沒有測試步驟,無法執行 +delete_check_reference_by=被場景引用 +not_execute=未執行 +execute_not_pass=未通過 +execute_pass=通過 +import_fail_custom_num_exists=導入失敗,自定義ID已存在 +#authsource +authsource_name_already_exists=認證源名稱已經存在 +authsource_name_is_null=認證源名稱不能為空 +authsource_configuration_is_null=認證源配置不能為空 +custom_field_already=工作空間下已存在該字段: +template_already=工作空間下已存在該模板: +expect_name_exists=預期名稱已存在 +ssl_password_error=認證密碼錯誤,請重新輸入密碼 +ssl_file_error=認證文件加載失敗,請檢查認證文件 +#log +api_definition=接口定義 +api_definition_case=接口定義用例 +api_automation=接口自動化 +api_automation_schedule=接口自動化-定時任務 +api_automation_report=測試報告 +track_test_case=測試用例 +track_test_case_review=用例評審 +track_test_plan=測試計劃 +track_test_plan_schedule=測試計劃-定時任務 +track_bug=缺陷管理 +track_report=報告 +performance_test=性能測試 +performance_test_report=性能測試報告 +system_user=系統-用戶 +system_organization=系統-組織 +system_workspace=工作空間 +system_test_resource=系統-測試資源池 +system_parameter_setting=系統-系統參數設置 +system_quota_management=系統-配額管理 +system_authorization_management=系統-授權管理 +organization_member=組織-成員 +organization_workspace=組織-工作空間 +workspace_service_integration=工作空間-服務集成 +workspace_message_settings=工作空間-消息設置 +workspace_member=工作空間-成員 +workspace_template_settings_field=工作空間-模版設置-自定義字段 +workspace_template_settings_case=工作空間-模版設置-用例模版 +workspace_template_settings_issue=工作空間-模版設置-缺陷模版 +project_project_manager=項目-項目管理 +project_project_member=項目-成員 +project_project_jar=項目-JAR包管理 +project_environment_setting=項目-環境設置 +project_file_management=項目-文件管理 +personal_information_personal_settings=個人信息-個人設置 +personal_information_apikeys=個人信息-API Keys +auth_title=系統認證 +group_permission=用戶組與權限 +test_case_status_prepare=未開始 +test_case_status_again=重新提審 +test_case_status_running=進行中 +test_case_status_finished=已完成 +connection_expired=連接已失效,請重新獲取 +# track home +api_case=接口用例 +performance_case=性能用例 +scenario_case=場景用例 +scenario_name_is_null=場景名稱不能為空 +test_case_status_error=失敗 +test_case_status_success=成功 +test_case_status_trash=廢棄 +test_case_status_saved=已保存 +create_user=創建人 +test_case_status=用例狀態 +id_not_rightful=ID 不合法 +project_reference_multiple_plateform=項目指向多個第三方平臺 +# mock +mock_warning=未找到匹配的Mock期望 +zentao_test_type_error=請求方式錯誤 +#项目报告 +enterprise_test_report=項目報告 +count=統計 +cannot_find_project=未找到測試項目 +project_repeatable_is_false=項目未配置URL可重複 +#环境组 +null_environment_group_name=環境組名稱不存在 +environment_group_name=環境組名稱 +environment_group_exist=已存在 +environment_group_has_duplicate_project=每個項目只能選擇一個環境! +#误报库 +error_report_library=誤報庫 +issue_jira_info_error=請檢查服務集成信息或Jira項目ID +error_code_is_unique=錯誤代碼不可重複 +no_version_exists=不存在版本!請先創建項目的版本 +jira_auth_error=賬號名或密碼(Token)錯誤 +jira_auth_url_error=測試連接失敗,請檢查Jira地址是否正確 +#ui 指令校驗 +param_error=參數校驗失敗!請檢查 +is_null=不能為空 +url_is_null=URL 參數不能為空 +frame_index_is_null=網頁索引號不能為空 +element_is_null=元素對象已經被刪除 +locator_is_null=元素定位參數不能有空 +coord=坐標 +input_content=輸入內容 +subitem_type=子選項類型 +subitem=子選項值 +varname=變量名 +varname_or_value=變量名或變量值 +attributeName=屬性名 +webtitle_varname=網頁標題變量名 +webhandle_varname=網頁窗口 handle變量名 +cant_be_negative=不能為負數 +expression=表達式 +times=循環次數 +command=步驟 +extract_type=提取信息類型 +cmdValidation=斷言 +cmdValidateValue=斷言值 +cmdValidateText=彈窗文本 +cmdValidateDropdown=下拉框 +cmdValidateElement=元素斷言 +cmdValidateTitle=網頁標題 +cmdOpen=打開網頁 +cmdSelectWindow=切換窗口 +cmdSetWindowSize=設置窗口大小 +cmdSelectFrame=選擇內嵌網頁 +cmdDialog=彈窗操作 +cmdDropdownBox=下拉框操作 +submit=提交表單 +cmdSetItem=設置選項 +cmdWaitElement=等待元素 +cmdInput=輸入操作 +cmdMouseClick=鼠標點擊 +cmdMouseMove=鼠標移動 +cmdMouseDrag=鼠標拖拽 +cmdTimes=次數循環 +cmdForEach=ForEach 循環 +cmdWhile=While 循環 +cmdIf=If +cmdElse=Else +cmdElseIf=ElseIf +close=關閉網頁 +cmdExtraction=數據提取 +cmdExtractWindow=提取窗口信息 +cmdExtractElement=提取元素信息 +tcp_mock_not_unique=該TCP端口號已被使用 +no_tcp_mock_port=無可用的TCP端口號,請聯繫管理員 +name_already_exists_in_module=同層級下已存在 +# issue template copy +target_issue_template_not_checked=無法複製,未選中目標項目 +source_issue_template_is_empty=複製錯誤,源項目為空 diff --git a/backend/services/workstation/pom.xml b/backend/services/workstation/pom.xml new file mode 100644 index 0000000000..b317fd7513 --- /dev/null +++ b/backend/services/workstation/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + io.metersphere + services + ${revision} + + workstation + ${revision} + workstation + + + + + io.metersphere + sdk + ${revision} + + + + + + + + src/main/java + + **/*.properties + **/*.xml + **/*.json + **/*.tpl + **/*.js + + false + + + src/main/resources + + **/* + + false + + + + + + + + diff --git a/backend/services/workstation/src/main/java/io/metersphere/workstation/utils/ShareUtil.java b/backend/services/workstation/src/main/java/io/metersphere/workstation/utils/ShareUtil.java new file mode 100644 index 0000000000..55246c7524 --- /dev/null +++ b/backend/services/workstation/src/main/java/io/metersphere/workstation/utils/ShareUtil.java @@ -0,0 +1,50 @@ +package io.metersphere.workstation.utils; + +import org.apache.commons.lang3.StringUtils; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; + +public class ShareUtil { + + private static final String UNIT_HOUR = "H"; + private static final String UNIT_DAY = "D"; + private static final String UNIT_MONTH = "M"; + private static final String UNIT_YEAR = "Y"; + + /** + * return time + expr + * + * @param time + * @param expr + * @return + */ + public static long getTimeMills(long time, String expr) { + Instant instant = Instant.ofEpochMilli(time); + ZoneId zone = ZoneId.systemDefault(); + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); + long timeMills = 0; + LocalDateTime date = exprToLocalDateTime(localDateTime, expr); + if (date != null) { + timeMills = date.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + } + return timeMills; + } + + public static LocalDateTime exprToLocalDateTime(LocalDateTime localDateTime, String expr) { + LocalDateTime date = null; + String unit = expr.substring(expr.length() - 1); + int quantity = Integer.parseInt(expr.substring(0, expr.length() - 1)); + if (StringUtils.equals(unit, UNIT_HOUR)) { + date = localDateTime.plusHours(quantity); + } else if (StringUtils.equals(unit, UNIT_DAY)) { + date = localDateTime.plusDays(quantity); + } else if (StringUtils.equals(unit, UNIT_MONTH)) { + date = localDateTime.plusMonths(quantity); + } else if (StringUtils.equals(unit, UNIT_YEAR)) { + date = localDateTime.plusYears(quantity); + } + return date; + } +} diff --git a/backend/services/workstation/src/main/resources/i18n/workstation.properties b/backend/services/workstation/src/main/resources/i18n/workstation.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/workstation/src/main/resources/i18n/workstation_en_US.properties b/backend/services/workstation/src/main/resources/i18n/workstation_en_US.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/workstation/src/main/resources/i18n/workstation_zh_CN.properties b/backend/services/workstation/src/main/resources/i18n/workstation_zh_CN.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/services/workstation/src/main/resources/i18n/workstation_zh_TW.properties b/backend/services/workstation/src/main/resources/i18n/workstation_zh_TW.properties new file mode 100644 index 0000000000..e69de29bb2