Template Expressions
Many of command/assertion parameters accept templates. So you can use template variables and expressions. For example, page.goto("https://github.com/{{ USER }}/puppetry/")
or TARGET.type("name{{ counter() }}")
Template variables
By using Settings/Template Variables panel we can define a set of variables per environment. For an instance, we can declare a separate target app URL for every environment (test.acme.com, stage.acme.com, www.acme.com). Before running/exporting test project we specify the desired environment and the corresponding template tags will be replaced with the value (URL) given for that environment.
Managing Variables
To edit template variables click on Settings... in the main menu:

Under the table Template variables you will find a manageable table with variables (by default it's empty):

You can use this UI the same way to do with targets, suits, and test cases. The difference is that the displayed variables belong to the selected environment:

As you add a new variable let's say to test environment it appears in all available environments. But when you update it's value, the value stays unique per environment.
Also note the edit action link next to the environment selector. When you click it you get a modal window where you can manage the list of environments:

After we assigned the variables and running the tests (or exporting them for CI) in the modal window we can choose what environment we target:

Template Syntax
Syntax
{{ VARIABLE_NAME }}
The tag makes Puppetry injecting the variable value assigned for the selected environment into the container string
Examples
{{ BASE_URL }}/api/{{ API_VERSION }}/method
Template Expressions
Template expressions are basically functions that we may want to use for building template string.
Test step parameters supporting templates provided with a helper widget, which you can you to autofill the field:

Environment Variables
Syntax
{{ env( NAME ) }}
Function returns system environment variable by a given name
Examples
{{ env( "SECRET" ) }}
Counter
Syntax
{{ counter() }}
Function increments every time it called, but is unique per command/assertion
Examples
joe.{{ counter() }}@acme.com
This template resolves in email addresses [email protected], [email protected] and so on
Iterate
Syntax
{{ iterate( LIST ) }}
Function iterates through a given list. It starts from the beginning as it reaches the end
Examples
{{ iterate(["[email protected]", "[email protected]", "[email protected]"]) }}
This template resolves in [email protected], [email protected], [email protected], [email protected], ...
Random
Syntax
{{ random( LIST ) }}
Function picks a random value out of a given list.
Examples
{{ random(["[email protected]", "[email protected]", "[email protected]"]) }}
HtmlOf
Syntax
{{ htmlOf( TARGET ) }}
Function extracts content (innerHTML) of a given TARGET.
Examples
{{ htmlOf("FOO") }}
AttributeOf
Syntax
{{ attributeOf( TARGET, ATTRIBUTE_NAME ) }}
Function retrieve attribute value of a given TARGET.
Examples
{{ attributeOf("FOO", "href") }}
PropertyOf
Syntax
{{ propertyOf( TARGET, PROPERTY_NAME ) }}
Function retrieve property value of a given TARGET.
Examples
{{ propertyOf("FOO", "checked") }}
Faker
Syntax
{{ fake( FAKER_METHOD, LOCALE ) }}
Function generates dummy data, by using Faker.js methods
Examples
{{ faker("address.streetSuffix", "en_GB") }}
Last updated
Was this helpful?