browser_variable {
type = "javascript"
name = "PWD_EXAMPLE"
}
browser_variable {
type = "javascript"
name = "PWD_EXAMPLE_2"
secure = true // applicable only for variables of type "text"
}
browser_step {
name = "Create new random password"
type = "extractFromJavascript"
params {
code = <<EOT
const minLength = 8;
const lowerCaseChars = 'abcdefghijklmnopqrstuvwxyz';
const upperCaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
const numericChars = '0123456789';
const specialChars = '$!@#$%^&*)(+=._-';
const allChars = lowerCaseChars + upperCaseChars + numericChars + specialChars;
function getRandomCharFromString(str) {
return str.charAt(Math.floor(Math.random() * str.length));
}
let randomString = getRandomCharFromString(lowerCaseChars)
+ getRandomCharFromString(upperCaseChars)
+ getRandomCharFromString(numericChars)
+ getRandomCharFromString(specialChars);
while (randomString.length < minLength) {
randomString += getRandomCharFromString(allChars);
}
randomString = randomString.split('').sort(() => 0.5 - Math.random()).join('');
return randomString;
EOT
variable {
name = "PWD_EXAMPLE_3"
}
}
}
Relevant debug or panic output
No response
Expected Behavior
In a browser test, I should have the capability to declare a JavaScript variable and utilize the corresponding extractFromJavaScript step to assign it a value.
Actual Behavior
When attempting to set a simple JavaScript browser_variable in Terraform, such as PWD_EXAMPLE, an error occurs even if the 'Create new random password’ step points to PWD_EXAMPLE instead of PWD_EXAMPLE_3, as shown in the previous code example. The error message is as follows:
Error: error updating synthetics browser test from /api/v1/synthetics/tests/browser/8ss-wcy-akr: 400 Bad Request: {"errors":["'variables' value '{'example': '', 'name': 'PWD_EXAMPLE', 'pattern': '', 'type': 'javascript'}' is invalid"]}"
To circumvent this, I bypassed the browser variable declaration and directly used a browser_step of type extractFromJavascript, specifying only the destination variable. This approach successfully set the variable PWD_EXAMPLE_3.
However, I encountered an issue with obfuscating this value. The secure attribute for browser_variable, which enables obfuscation, is only applicable to variables of type text. It appears that pre-declaring a browser_variable of type javascript is not supported. While obfuscation is achievable through the Datadog UI, enabling this feature and running terraform apply results in persistent errors, even after disabling the option. The only solution is to delete the test from the UI and reapply the Terraform configuration:
Datadog Terraform Provider Version
v3.39.0
Terraform Version
v1.8.3
What resources or data sources are affected?
datadog_synthetics_test
Terraform Configuration Files
Relevant debug or panic output
No response
Expected Behavior
In a browser test, I should have the capability to declare a JavaScript variable and utilize the corresponding
extractFromJavaScript
step to assign it a value.Actual Behavior
When attempting to set a simple JavaScript
browser_variable
in Terraform, such asPWD_EXAMPLE
, an error occurs even if the 'Create new random password’ step points toPWD_EXAMPLE
instead ofPWD_EXAMPLE_3
, as shown in the previous code example. The error message is as follows:To circumvent this, I bypassed the browser variable declaration and directly used a
browser_step
of typeextractFromJavascript
, specifying only the destination variable. This approach successfully set the variablePWD_EXAMPLE_3
.However, I encountered an issue with obfuscating this value. The
secure
attribute forbrowser_variable
, which enables obfuscation, is only applicable to variables of typetext
. It appears that pre-declaring abrowser_variable
of typejavascript
is not supported. While obfuscation is achievable through the Datadog UI, enabling this feature and runningterraform apply
results in persistent errors, even after disabling the option. The only solution is to delete the test from the UI and reapply the Terraform configuration:Steps to Reproduce
No response
Important Factoids
No response
References
No response