UNPKG

trident-beta

Version:

trident is a sample and lightly tools aims to improve collaboration efficiency between SDET and QA based on initiative from Einstein/TestIT.

372 lines (371 loc) 10.4 kB
/** * TestIt API */ import { CaseInfo, IBuild, IGetSuggestTestCasesResponseDTO, IProject, IProjectInfo, IProjectKeyword, ISectionInfo, ISuite, ITestCase, ITestExecution, ITestPlan, IVersion } from "./dto"; import { IGlobalData } from "./dto"; import { Scope } from "./constants"; import { SearchOptions } from "./dto"; export default class TestItSDK { private endpoint; private userName; private accessToken; private cache; private httpClient; constructor(endpoint: string); /** * Return true if client is authorized. */ getAutorized(): boolean; /** * Login to TestIt. Save cookies if login successfully. * @param username * @param password */ login(username: string | undefined, password: string | undefined): Promise<void>; /** * Logout Testit, delete cookies. */ logout(): void; /** * Initialize sdk,fetch global data. * @return {Promise<void>} */ init(): Promise<void>; /** * Fetch fields information by project id for further using. * @param projectId */ fetchFieldsInfoById(projectId: number): Promise<any>; /** * Get search elements map from fields by name. * @param response * @param name (like Keywords Subtype...) */ private getFieldsInfoMapByName; /** * Get field's response values map (name -> index). * @param response */ private getFieldsIndexMap; /** * Get field's response values map (name -> id). * @param response */ private getFieldsIdMap; /** * Get projects. * @return {Promise<IProject[]>} */ getProjects(): Promise<IProject[]>; /** * Generate prefix project map. */ private genPrefixProjectMap; /** * Get project by name. * @param projectName */ getProjectByName(projectName: string): Promise<IProject | undefined>; /** * Get project id by name. * @param projectName */ private getProjectIdByName; /** * Get project by project id. * @param projectId */ getProjectById(projectId: number): Promise<IProjectInfo>; /** * Get keywords by project id. * 【Error】Project doesn't include keywords!Not really go. * @param projectId */ getKeywordsByProjectId(projectId: number): Promise<IProjectKeyword[]>; /** * Get project tree by project id. * @param projectId */ getProjectTreeById(projectId: number): Promise<ISuite[]>; /** * Get section by section id. * @param sectionId */ getSectionById(sectionId: number): Promise<ISectionInfo>; /** * Get test case by test case id. - 17 * @param testCaseId */ getTestCaseById(testCaseId: number): Promise<ITestCase>; /** * Get many test cases by test case ids. * @param testCaseIds */ getTestCasesByIds(testCaseIds: number[]): Promise<ITestCase[]>; /** * Get test plans from test case by test case id. * @param testCaseId */ getTestPlansByTestCaseId(testCaseId: number): Promise<ITestPlan[]>; /** * Get test plans by project ids. * @param projectIds */ getTestPlansByProjectIds(projectIds: number[]): Promise<ITestPlan[]>; /** * Get execution-history by test case id. * @param testCaseId */ getExecutionHistoryByTestCaseId(testCaseId: number): Promise<ITestExecution>; /** * Get test case version by version id. * @param versionId */ getCaseVersionByVersionId(versionId: number): Promise<IVersion>; /** * Get test case by key. * 【Example】key = JPT-3166 * @param key */ getTestCaseByKey(key: string): Promise<ITestCase>; /** * Get builds by test plan id. * @param testPlanId */ getBuildsByTestPlanId(testPlanId: number): Promise<IBuild[]>; /** * Get test plan by test plan id. * @param testPlanId */ getTestPlanById(testPlanId: number): Promise<ITestPlan>; /** * Get tree by test plan id. * @param testPlanId */ getTreeByTestPlanId(testPlanId: number): Promise<ITestPlan>; /** * Get execution progress by test plan id. * @param testPlanId */ getExecutionProgressByTestPlanId(testPlanId: number): Promise<ITestExecution>; /** * Get build by build id. * @param buildId */ getBuildById(buildId: number): Promise<IBuild>; /** * Get suite by suite id. * @param suiteId */ getSuiteById(suiteId: number): Promise<ISuite>; /** * Get suite tree by suite id. * @param suiteId */ getSuiteTreeById(suiteId: number): Promise<ISuite[]>; /** * Search test cases by json query. * @param query * @param scope */ private searchTestCasesByJsonQuery; /** * Flatten response data. * @param root */ private flat; /** * Search and generate template info by search Option. * @param searchOption */ generateTemplateInfoByOptions(searchOption: SearchOptions): Promise<any>; /** * Store template file by search options. * @param searchOption * @param path */ storeTemplateFileByOptions(searchOption: SearchOptions, path: string): Promise<any>; /** * Store files in tree by search options. * [Abandon]Please replace with the API of [storeFilesBySearchOptions] * @param searchOption * @param path */ private storeFilesInTreeByOptions; /** * Store files by search option(use template render engine) * @param searchOption * @param path * @param templatePath */ storeFilesBySearchOptions(searchOption: SearchOptions, path: string, templatePath?: string): Promise<any>; /** * Handle search response to generate case info map * @param response */ handleResponse(response: any): Promise<CaseInfo[]>; /** * Fill case info map * @param tempKey * @param caseResponse */ private fillCaseInfoMap; /** * Search test cases by query. * 【Query Example】const query = `version eq "active" and project_id in "[1311]" and field.5371560 in "[6234174]" and field.224 in "[11949947]"`; * @param query * @param scope * @param suiteName use suite name to filter */ searchTestCasesByQuery(query: string, scope?: Scope, suiteName?: string): Promise<any>; /** * Search suite by suite name in response * @param response * @param suiteName */ private SearchSuiteBlkInResponse; /** * Convert search query to json. * @param query */ private generateSearchJson; /** * Search testCases by search options(projectName,keywords,subtype). * @param projectName * @param keywords * @param subtype */ searchCasesBySearchOptions(searchOption: SearchOptions): Promise<any>; /** * Print search result info * @param flatResponse */ private printSearchInfo; /** * Get suite id by name. * @param suiteName * @param projectId */ private getSuiteIdByName; /** * Search cases by suite name. * [Abandon] * @param suiteName * @param projectName */ private searchCasesBySuiteName; /** * Store cases by suite name. * [Abandon] * @param suiteName * @param projectName * @param path */ private storeCasesBySuiteName; /** * Generate search query by project name、keywords and suite. * @param projectName * @param keywords * @param subtype */ generateQuery(searchOption: SearchOptions): Promise<string>; /** * Get sync projects. */ getSyncProjects(): Promise<any>; /** * Get sync cases. */ getSyncCases(): Promise<any>; /** * Get store project by project id. * @param projectId */ getStoreProjectById(projectId: number): Promise<any>; /** * Get global data. * @return {Promise<IGlobalData>} */ getGlobalData(): Promise<IGlobalData>; /** * Search for suggest cases by query. * @param pattern * @param limit */ getSuggestTestCases(pattern: string, limit?: number): Promise<IGetSuggestTestCasesResponseDTO>; generateInfosByKey(key: string): Promise<any>; /** * Generate template info by key according to giving template * @param key * @param templatePath */ generateInfoByKeyInTemplate(key: string, templatePath: string): Promise<string>; getTestStepsInfo(): Promise<void>; /** * Fetch template field information by field name * To fill template * @param responseData * @param field */ fetchTemplateFieldInfo(responseData: any, field: string): Promise<any>; /** * Convert original array to string * @param original */ private convertoString; /** * Generate template information by key. * @param key Case key */ generateTemplatesInfoByKey(key: string): Promise<string>; /** * Write info to ouputstream and storage to file path. * @param info * @param filePath */ writeTemplateInfo(info: string, filePath: string): Promise<any>; /** * Store a template file to file path by case key. * @param key * @param filePath */ storeTemplateInfoByCaseKey(key: string, filePath: string): Promise<void>; /** * Store template info for file tree by case key. * @param key * @param filePath */ private storeFileInTreeByCaseKey; /** * Store file by case key * @param key * @param filePath * @param templatePath */ storeFileByCaseKey(key: string, filePath: string, templatePath?: string): Promise<void>; /** * Store and fill templateInfo * @param caseInfo * @param filePath * @param templateInfo */ storeFileInTree(caseInfo: CaseInfo, filePath: string, templateInfo: string): Promise<any>; /** * Write info by create dir. * @param info * @param filePath */ private writeInfoByCreateDir; private writeInfo; /** * Make directory. * @param dir */ private mkdir; /** * Filter string with special character. * @param str */ private stringFilter; private htmlDecodeByRegExp; }