UNPKG

qansigliere-testrail-api-integration

Version:

The main idea of ​​this library created in the JavaScript language is to provide a ready-made set of API methods for integration with Testrail

1,209 lines (903 loc) 25 kB
# qansigliere-testrail-api-integration The main idea of ​​this library created in the JavaScript language is to provide a ready-made set of API methods for integration with Testrail ## Author https://www.youtube.com/@QANSIGLIERE/ ## Support the project https://buymeacoffee.com/qansigliere ## Installation Using npm `npm i qansigliere-testrail-api-integration` ## How to use it ### Create a \*.env file Create any \*.env file (like `testrail.env`) and write the following information in the created file ``` export TESTRAIL_URL="__YOUR_TESTRAIL_URL__" export TESTRAIL_USERNAME="__YOUR_TESTRAIL_EMAIL__" export TESTRAIL_APIKEY="__YOUR_TESTRAIL_APIKEY__" ``` ### Make the \*.env file works Just run in the terminal the following command: `source yourfile.env` ### And now You can make any API call to Your TestRail ``` var { TestRail_API } = require('qansigliere-testrail-api-integration'); (async function Demo() { let new_integration = new TestRail_API(); let resp = await new_integration.get_templates(1); console.log(JSON.stringify(resp)); })(); ``` ## API Documentation ### Case Types TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077295487252-Case-Types) #### get_case_types ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_case_types(); ``` ### Roles TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077853258772-Roles) #### get_roles ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_roles(); ``` ### Statuses TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077935129364-Statuses) #### get_case_statuses ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_case_statuses(); ``` #### get_statuses ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_statuses(); ``` ### Templates TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077938165780-Templates) #### get_templates ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_templates(1); ``` ### Priorities TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077746564244-Priorities) #### get_priorities ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_priorities(); ``` ### Result Fields TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077871398036-Result-Fields) #### get_result_fields ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_result_fields(); ``` ### Runs TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077874763156-Runs) #### get_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_run(1); ``` #### get_runs ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_runs(1); ``` #### add_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_run(1, { suite_id: 3, name: 'Generated by QANSIGLIERE', description: 'Created for DEMO', include_all: true, }); ``` #### update_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_run(2, { description: 'A description for the test run', include_all: true, }); ``` #### close_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.close_run(2, {}); ``` ### delete_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_run(2, {}); ``` ### BDDs TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7832161593620-BDDs) #### get_bdd ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_bdd(5); ``` #### add_bdd ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_bdd(1, `test.txt`); ``` ### Case Fields TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077281158164-Case-Fields) #### get_case_fields ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_case_fields(); ``` #### add_case_field ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_case_field({ "type": "Multiselect", "name": "my_multiselect", "label": "My Multiselect", "description": "my custom Multiselect description", "configs": [ { "context": { "is_global": true, "project_ids": "" }, "options": { "is_required": false, "items": "1, One\n2, Two" } } ], "include_all": true }); ``` ### Reports TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077825062036-Reports) #### get_reports ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_reports(1); ``` #### run_report ``` let new_integration = new TestRail_API(); let resp = await new_integration.run_report(1); ``` ### Variables TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077979742868-Variables) #### get_variables ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_variables(1); ``` #### add_variable ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_variable(1, { id: 613, name: 'f' }); ``` #### update_variable ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_variable(1, { id: 1171, name: 'age', }); ``` #### delete_variable ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_variable(1, {}); ``` ### Projects TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077792415124-Projects) #### get_project ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_project(1); ``` #### get_projects ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_projects(); ``` #### add_project ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_project({ name: 'Generated via QANSIGLIERE API library', announcement: 'Welcome to my project', show_announcement: true, }); ``` #### update_project ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_project(7, { name: 'Updated via QANSIGLIERE API library', announcement: 'Subscribe to the channel', show_announcement: true, }); ``` #### delete_project ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_project(7, {}); ``` ### Results TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077819312404-Results) #### get_results ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_results(14)); ``` #### get_results_for_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_results_for_case(4, 14); ``` #### get_results_for_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_results_for_run(4); ``` #### add_result ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_result(14, { status_id: 5, comment: 'This test failed' }); ``` #### add_result_for_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_result_for_case(4, 16, { status_id: 1, comment: 'This test passed' }); ``` #### add_results ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_results(4, { results: [ { test_id: 17, status_id: 1, comment: 'This test failed', defects: 'TR-7', }, { test_id: 18, status_id: 5, comment: 'This test passed', elapsed: '5m', version: '1.0 RC1', }, { test_id: 19, status_id: 2, comment: 'Assigned this test to Joe', }, ], }); ``` #### add_results_for_cases ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_results_for_cases(4, { results: [ { case_id: 17, status_id: 1, comment: 'This test failed', defects: 'TR-7', }, { case_id: 18, status_id: 5, comment: 'This test passed', elapsed: '5m', version: '1.0 RC1', }, { case_id: 19, status_id: 2, comment: 'Assigned this test to Joe', }, ], }); ``` ### Suites TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077936624276-Suites) #### get_suite ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_suite(10); ``` #### get_suites ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_suites(4); ``` #### add_suite ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_suite(4, { name: 'This is a new test suite', description: 'Use the description to add additional context details', }); ``` #### update_suite ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_suite(11, { name: 'This is changed via API', description: 'Like this video', }); ``` #### delete_suite ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_suite(11, {}); ``` ### Sections TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077918603412-Sections) #### get_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_section(9); ``` #### get_sections ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_sections(8, 10); ``` #### add_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_section(8, { suite_id: 10, name: 'This section is generated via API', parent_id: 9, }); ``` #### move_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.move_section(10, { parent_id: null, after_id: 8, }); ``` #### update_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_section(10, { name: 'Updated via API', }); ``` #### delete_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_section(10, {}); ``` ### Milestones TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077723976084-Milestones) #### get_milestone ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_milestone(1); ``` #### get_milestones ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_milestones(4); ``` #### add_milestone ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_milestone(4, { name: 'This milestone has been created via API', }); ``` #### update_milestone ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_milestone(2, { name: 'Updated via API', }); ``` #### delete_milestone ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_milestone(2, {}); ``` ### Groups TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077338821012-Groups) #### get_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_group(1); ``` #### get_groups ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_groups(); ``` #### add_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_group({ name: 'New Group', user_ids: [1, 2, 3, 4, 5], }); ``` #### update_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_group(2, { group_id: 2, name: 'Updated Group via API', user_ids: [1, 2, 3, 4, 5], }); ``` #### delete_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_group(2, {}); ``` ### Users TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077978310292-Users) #### get_user ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_user(1); ``` #### get_current_user ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_current_user(1); ``` #### get_user_by_email ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_user_by_email('qansigliere@gmail.com'); ``` #### get_users ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_users(); ``` #### get_users\_\_project_id ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_users__project_id(1); ``` #### add_user ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_user({ name: 'Don Gun', email: 'qansigliere+1@gmail.com', }); ``` #### update_user ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_user(2, { name: 'Updated API', }); ``` ### Tests TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077990441108-Tests) #### get_test ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_test(20); ``` #### get_tests ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_tests(5); // let resp = await new_integration.get_tests('5&limit=30&status_id=2'); ``` ### Shared Steps TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077919815572-Shared-Steps) #### get_shared_step ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_shared_step(1); ``` #### get_shared_step_history ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_shared_step_history(1); ``` #### get_shared_steps ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_shared_steps(4); ``` #### add_shared_step ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_shared_step(4, { title: 'First Step', custom_steps_separated: [ { content: 'Open home page', additional_info: 'Must be a new browser session', expected: 'Login page loads', refs: 'RF-1', }, { content: 'Log In', }, ], }); ``` #### update_shared_step ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_shared_step(2, { title: 'Updated VIA API', custom_steps_separated: [ { content: 'Subscribe', additional_info: 'Must be a new comment here', expected: 'Login page loads', refs: 'RF-1', }, { content: 'Log In', }, ], }); ``` #### delete_shared_step ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_shared_step(2, {}); ``` ### Datasets TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077300491540-Datasets) #### get_dataset ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_dataset(1); ``` #### get_datasets ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_datasets(4); ``` #### add_dataset ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_dataset(4, { id: 311, name: 'Def', variables: [], }); ``` #### update_dataset ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_dataset(3, { name: 'API', variables: [], }); ``` #### delete_dataset ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_dataset(3, {}); ``` ### Cases TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077292642580-Cases) #### get_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_case(14); ``` #### get_cases ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_cases(4, 6); // let resp = await new_integration.get_cases(4, '6&priority_id=4'); ``` #### get_history_for_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_history_for_case(14); ``` #### add_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_case(5, { title: 'This is a test case', type_id: 1, priority_id: 3, estimate: '3m', refs: 'RF-1, RF-2', custom_steps_separated: [ { content: 'Step 1', expected: 'Expected Result 1', }, { content: 'Step 2', expected: 'Expected Result 2', }, { shared_step_id: 3, }, ], }); ``` #### copy_cases_to_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.copy_cases_to_section(5, { section_id: 5, case_ids: [22, 23] }); ``` #### update_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_case(11, { priority_id: 1, estimate: "5m" }); ``` #### update_cases ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_cases(6, { case_ids: [26, 27], priority_id: 1, estimate: "5m" }); ``` #### move_cases_to_section ``` let new_integration = new TestRail_API(); let resp = await new_integration.move_cases_to_section(12, { section_id: 12, suite_id: 6, case_ids: [26, 27] }); ``` #### delete_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_case(25, {}); ``` #### delete_cases ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_cases(6, { case_ids: [23, 24], }); ``` ### Plans TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077711537684-Plans) #### get_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_plan(6); ``` #### get_plans ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_plans(9); ``` #### add_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_plan(9, { name: "System test", entries: [ { suite_id: 12, name: "Custom run name", assignedto_id: 1 // ID of the assignee }, { suite_id: 12, include_all: false, // Custom selection case_ids: [28, 29, 30] } ] }); ``` #### add_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_plan_entry(9, { suite_id: 12, include_all: true, runs: [ { "include_all": false, "case_ids": [28], }, { "include_all": false, "case_ids": [28, 29, 30], }, ] }); ``` #### add_run_to_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_run_to_plan_entry(9, "0e165a00-bf50-4482-bde1-3134c1dacd50", { config_ids: [1], include_all: false, case_ids: [28, 29, 30] }); ``` #### update_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_plan(9, { name: "Updated VIA API", }); ``` #### update_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_plan_entry(9, "0e165a00-bf50-4482-bde1-3134c1dacd50", { name: "updated too", description: "it was updated via qansigliere JS lib" }); ``` #### update_run_in_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_run_in_plan_entry(10, { include_all: true, }); ``` #### close_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.close_plan(14, {}); ``` #### delete_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_plan(15, {}); ``` #### delete_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_plan_entry(9, "0e165a00-bf50-4482-bde1-3134c1dacd50", {}); ``` #### delete_run_from_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_run_from_plan_entry(21, {}); ``` ### Configurations TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077298488340-Configurations) #### get_configs ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_configs(9); ``` #### add_config_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_config_group(9, { name: "Browsers" }); ``` #### add_config ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_config(3, { name: "Chrome" }); ``` #### update_config_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_config_group(3, { "name": "Operating Systems" }); ``` #### update_config ``` let new_integration = new TestRail_API(); let resp = await new_integration.update_config(3, { "name": "Firefly" }); ``` #### delete_config_group ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_config_group(3, {}); ``` #### delete_config ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_config(3, {}); ``` ### Attachments TestRail documentation is present [here](https://support.testrail.com/hc/en-us/articles/7077196481428-Attachments) #### add_attachment_to_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_attachment_to_case(24, 'icon.png'); ``` #### add_attachment_to_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_attachment_to_plan(16, 'icon.png'); ``` #### add_attachment_to_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_attachment_to_plan_entry(16, "0e165a00-bf50-4482-bde1-3134c1dacd50", 'icon.png'); ``` #### add_attachment_to_result ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_attachment_to_result(46, 'icon.png'); ``` #### add_attachment_to_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.add_attachment_to_run(22, 'icon.png'); ``` #### get_attachments_for_case ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachments_for_case(28); // let resp = await new_integration.get_attachments_for_case('11&limit=1'); ``` #### get_attachments_for_plan ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachments_for_plan(16); ``` #### get_attachments_for_plan_entry ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachments_for_plan_entry(16, "0e165a00-bf50-4482-bde1-3134c1dacd50"); ``` #### get_attachments_for_run ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachments_for_run(10); ``` #### get_attachments_for_test ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachments_for_test(26); ``` #### get_attachment ``` let new_integration = new TestRail_API(); let resp = await new_integration.get_attachment('30a47475-de26-4215-9459-b9094aa3b42e'); ``` #### delete_attachment ``` let new_integration = new TestRail_API(); let resp = await new_integration.delete_attachment('30a47475-de26-4215-9459-b9094aa3b42e', {}); ``` ## Related Videos - https://youtube.com/live/q2NO23ruDqI?feature=share - https://youtube.com/live/IC4hoYwzvDY?feature=share - https://youtube.com/live/o9yonQpeFg4?feature=share - https://youtube.com/live/qjw5o0Kk6iQ?feature=share - https://youtube.com/live/XRJWPa8UW3M?feature=share - https://youtube.com/live/4y6EgblRqP0?feature=share - https://youtube.com/live/fTWMR7L6sCE?feature=share - https://youtube.com/live/XG9moLSdXuk?feature=share - https://youtube.com/live/bUy-FJYVz2M?feature=share ## Improvements & Suggestions https://forms.gle/GZbS9hw42tSYJxKL7