Manipulate variables
You can manipulate your test's variables by using the following commands:
-
Get an input variable:
test.variables.get("INPUT_VARIABLE_NAME");This will automatically add an input variable named INPUT_VARIABLE_NAME at the top of your test for you to use
-
Set an output variable:
test.variables.set("OUTPUT_VARIABLE_NAME", "output variable value");This will automatically add an output variable named OUTPUT_VARIABLE_NAME at the top of your test for you to use
Create custom metrics
You can create custom metrics directly from your scripts. These metrics will be processed by kapptivate just like any other metric, meaning that you can use them exactly the same way you are used to for creating dashboards, alerts, and more.
Here is an example of creating a custom metric inside a JavaScript action :
describe('My test suite', function () {
it('Should create a custom metric with fields and tags', function () {
test.metrics.create("my_custom_metric", {
field1_int: 1, // Use an int as a field.
field2_float: 5.8, // Use a float as a field.
field3_string: "some string", // Use a string as a field.
field4_object: { // Use a complex object as a field.
subKey1: "a",
subKey2: 666
}
},
// Add some tags to your metric.
{
tag1: "some tag",
tag2: "some other tag"
}
);
});
it('Should create a custom metric with fields but without tags', function () {
// Tags are optional.
test.metrics.create("my_custom_metric_without_tags", {
field1: 1
})
});
});
Note : The example above intentionally creates metrics with static information to keep the code straightforward. Read the Manipulate timers section below to learn how you can measure durations that can be used to create more meaningful metrics.
At the time of writing, nothing indicates in the results that a metric has been created :
JavaScript result custom metric
But as you can see, the information is indeed present and usable in a dashboard :
Create custom artifacts
A set of predefined artifacts will be automatically created for every action you make. In addition you can create custom artifacts directly from your scripts.
Usage
test.artifacts.create(name, content, { encoding, type })
Parameters
| Name | Type | Details |
| name | string | The name of your artifact, including the extension. When displayed in kapptivate, the extension will be stripped. |
| content | any |
The content of your artifact. Can be one of the following :
|
| encoding optional | string |
The encoding of your artifact (default: utf8). Other possible values include :
|
| type optional | string | The type of your artifact. Can be anything and is mostly used internally at kapptivate to display some artifacts a bit differently than others. |
Examples
Strings
Here is an example of creating a custom artifact from a string inside a JavaScript action :
describe('My suite', function () {
it('Step 1', function () {
test.artifacts.create("hello_world.txt", "Hello world!")
});
});
This will result in an artifact called hello_world, with the content Hello world! :
Objects
Here is an example of creating a custom artifact from a JavaScript object inside a JavaScript action :
describe('My suite', function () {
it('Step 1', function () {
test.artifacts.create("data.json", {key: "value", array: [1, 2, 3]})
});
});
This will result in an artifact called data, with the content {"key":"value","array":[1,2,3]} :
Numbers
Here is an example of creating a custom artifact from a number inside a JavaScript action :
describe('My suite', function () {
it('Step 1', function () {
test.artifacts.create("number", 123)
});
});
This will result in an artifact called number, with the content 123 :
Base64
Here is an example of creating a custom artifact from a base64 encoded item inside a JavaScript action, by adding the optional parameter encoding with the base64 value :
describe('My suite', function () {
it('Step 1', function () {
const logo = "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"
test.artifacts.create("logo.png", logo, {encoding: "base64"})
});
});
This will result in an artifact representing the item (here the kapptivate logo) :
Create custom artifacts from files
In addition to creating custom artifacts from scratch like showed in the Create custom artifacts section, you can create custom artifacts from existing files.
Usage
test.artifacts.createFromFile(name, filePath, { type })
Parameters
| Name | Type | Details |
| name | string | The name of your artifact, including the extension. When displayed in kapptivate, the extension will be stripped. |
| filePath | string | The path of an existing file you want to make an artifact of. |
| type optional | string | The type of your artifact. Can be anything and is mostly used internally at kapptivate to display some artifacts a bit differently than others. |
Examples
Here is an example of creating a custom artifact from an existing file inside a JavaScript action :
import * as fs from "fs";
describe('My suite', function () {
it('Step 1', function () {
fs.writeFileSync("/tmp/source_file.txt", "Hello world!");
test.artifacts.createFromFile("hello_world.txt", "/tmp/source_file.txt")
});
});
Write a log file
You can dynamically build multiple log files throughout your script, which will be saved as artifacts.
Declare a logger
Usage
const logger = test.artifacts.newLogger(name, { format, encoding })
Parameters
| Name | Type | Details |
| name | string | The name of the artifact your logger will write to, including the extension. When displayed in kapptivate, the extension will be stripped. |
| format optional | function | A function that takes in parameter the content and returns the formatted value to append to the log file. By default, it prefixes every line by the current timestamp in the ISO8601 format. |
| encoding optional | string | The encoding of your artifact (default: utf8). |
Warning : You should declare each of your loggers at the top of the describe block, before every it block, and then initialize them inside a before hook :
describe('My suite', function () {
let logger;
let loggerCustomFormat;
before(function () {
logger = test.artifacts.newLogger("Logs.log");
loggerCustomFormat = test.artifacts.newLogger("Logs custom format.log", {format: (content) = `${moment.utc().format()} - ${content}`});
});
// Write your `it` blocks here...
});
Use a logger
Usage
logger.log(content)
Parameters
| Name | Type | Details |
| content | any |
The content to be appended to the log file. Can be one of the following :
|
Examples
Default format
Here is an example of building a log file inside a JavaScript action :
describe('My suite', function () {
let logger;
before(function () {
logger = test.artifacts.newLogger("Logs.log");
});
it('Step 1', function () {
logger.log("Hello world!")
logger.log({key: "value", array: [1, 2, 3]})
logger.log(123)
});
});
By default, every line of log will be prefixed by the current timestamp in the ISO8601 format :
2021-03-28T23:09:50.393Z - Hello world!
2021-03-28T23:09:50.393Z - {"key":"value","array":[1,2,3]}
2021-03-28T23:09:50.394Z - 123
Custom format
You can customize the format of every line of log by passing the format optional parameter to the test.artifacts.newLogger function :
describe('My suite', function () {
let logger;
before(function () {
logger = test.artifacts.newLogger("Logs.log", {format: (content) = `${moment.utc().format()} - ${content}`});
});
it('Step 1', function () {
logger.log("Hello world!")
logger.log({key: "value", array: [1, 2, 3]})
logger.log(123)
});
});
Here the timestamp format will be ISO8601 as well, but without the fractional seconds:
2021-03-28T23:13:07Z - Hello world!
2021-03-28T23:13:07Z - {"key":"value","array":[1,2,3]}
2021-03-28T23:13:07Z - 123