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
TypeScript
/**
* 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;
}