1.2.0 • Published 5 months ago

qansigliere-testrail-api-integration v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

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

get_case_types

let new_integration = new TestRail_API();
let resp = await new_integration.get_case_types();

Roles

TestRail documentation is present here

get_roles

let new_integration = new TestRail_API();
let resp = await new_integration.get_roles();

Statuses

TestRail documentation is present here

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

get_templates

let new_integration = new TestRail_API();
let resp = await new_integration.get_templates(1);

Priorities

TestRail documentation is present here

get_priorities

let new_integration = new TestRail_API();
let resp = await new_integration.get_priorities();

Result Fields

TestRail documentation is present here

get_result_fields

let new_integration = new TestRail_API();
let resp = await new_integration.get_result_fields();

Runs

TestRail documentation is present here

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Improvements & Suggestions

https://forms.gle/GZbS9hw42tSYJxKL7

1.2.0

5 months ago

1.1.1

9 months ago

1.1.0

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago

1.1.3

6 months ago

1.1.2

9 months ago

0.21.0

9 months ago

0.20.0

9 months ago

0.19.0

9 months ago

0.26.0

9 months ago

0.25.0

9 months ago

0.24.0

9 months ago

0.23.0

9 months ago

0.22.0

9 months ago

0.13.0

9 months ago

0.14.0

9 months ago

0.15.0

9 months ago

0.16.0

9 months ago

0.17.0

9 months ago

0.18.0

9 months ago

0.12.0

9 months ago

0.10.0

9 months ago

0.8.0

9 months ago

0.7.0

9 months ago

0.4.0

9 months ago

0.2.0

9 months ago

0.1.0

9 months ago