Versions
Python and Java follow the same version numbering. 5.4.1 was released for Java only.
5.5.0
- Video of a run that passed. The executor closes the session (or the screen recording) after the last
step and uploads whatever appeared in the evidence folder before recording the status:
close_at_endin Python (run_components(localizar, close_at_end=[navegador]), with objects that haveclose()or functions such asdriver.quit) andProtonComponentRunner.closeAtEnd(sessao)in Java. It also closes them when a step fails and when the next step belongs to another project. See Close at the end in Python and Java. - Evidence between steps. Whatever the project saves between two steps is uploaded with the next step.
- Folder per run.
run_evidence_dir()in Python andProtonComponentRunner.runEvidenceDir()in Java returnevidencias/<run id>. With the default folder, the executor ignores the subfolders of the other runs that the runner handles at the same time in the same project folder. Whatever the project saves directly inevidenciasis still uploaded. See Evidence folder in Python and Java. - Failure before the first step.
record_failure(erro)andrecord_failure(erro, motivo)in Python, andProtonComponentRunner.recordFailure(erro)andrecordFailure(erro, motivo)in Java, record the error in the error panel and Failed with the reason: a session that doesn't open, a device that is offline. See Failure before the first step in Python and Java. - Environment reason. A new exception marks an environment failure:
ProtonEnvironmentFailurein Python andProtonEnvironmentErrorin Java. A library's exception can state its own reason (thefailure_reasonattribute in Python, theProtonFailureinterface in Java). The reason is also looked up in the error's causes (failure_reasonin Python,FailureReason.ofin Java), and the run environment read error (ProtonEnvironmentErrorin Python,ProtonEnvironmentExceptionin Java) counts as an environment failure. - Clean error panel. No pytest, JUnit or Surefire lines and no terminal colors.
- Proton run.
is_proton_execution()in Python requires a non-emptyidDatasetRun, andProtonEnv.isProtonExecution()is now public in Java. - Device chosen at trigger time. In Python,
get_dataset_run_info()includesdeviceFarmanddeviceOsVersion. In Java,ProtonBrowserStack.recordBSSessionId(id)records the BrowserStack session id in the run and returns the HTTP status,updateBSSessionId(id)still works, deprecated, and warns in the output when Proton doesn't record it, andgetBStackDeviceOsVersion()returns the OS version chosen when the run was triggered. See BrowserStack.
With a Proton older than the
PUT /dataset-run/{id} route, recordBSSessionId returns
404, and deviceFarm and deviceOsVersion don't come back (in Java, getBStackDeviceOsVersion() returns
an empty value), without breaking anything.
5.4.1 (Java)
- File names with accents. The screenshot, the video and the attachment sent by the Java SDK reach Proton
with the name in UTF-8. Up to 5.4.0, each accented letter became
_in Proton. Files sent earlier keep the name they were saved with.
5.4.0
- Log with levels. Each log line carries its level (Info, Warning, Error or Critical) and an optional
context:
log_info,log_warning,log_errorandlog_criticalin Python,logInfo,logWarning,logErrorandlogCriticalin Java. The run screen filters by level, and log search finds the line across runs. - Line also in the process output. Each line goes to the Maven or Python output with the time and the level. Above the Proton log limit (10,000 lines), the run's log file is where the full log is kept.
- Failure reason. Failed can carry the reason (business, technical or environment), without changing
the status. With the component executor, just raise
ProtonBusinessErrorin the step for the failure to count as a business failure. - Correlation ID. With a runner that delivers
PROTON_CORRELATION_ID(5.0.8 onward), the SDK sends the id in every call to Proton (X-Correlation-Idandtraceparent) and offers it to the calls the automation makes:correlation_headers()in Python andProtonEnv.correlationHeaders()in Java. - The Proton 4 Failed statuses (data and environment) are still sent as Failed, now with the business and environment reasons.
With a Proton older than run observability, the level, the context and the reason are ignored, and the log works as before.
5.3.3
- A step that fails stays Failed. The component executor no longer closes the step that failed: the run's Failed closes it as Failed. Up to 5.3.2, it showed up as Passed on the timeline, even with the run in Failed.
5.3.2
- Mobile app through the Proton 5 route. The download of the mobile app installer uses the Proton 5 route, which accepts the run token. Up to 5.3.1, it used the Proton 4 files route.
5.3.1
-
Public Maven repository. The Java SDK is now published at
https://maven.protoncloud.com.br, with no credentials required. GitHub Packages continues in parallel. -
Running status. The component executor records Running when the first step is about to run. In 5.3.0, the run went from Loading straight to Passed.
5.3.0
- Component executor. The loop that runs the dataset steps now lives in the SDK:
run_componentsin Python andProtonComponentRunnerin Java. See Component executor and the template projects. - Python: output with
+or%. The value reaches Proton intact. Before, a+turned into a space (a+55phone number, for example) and a%made the write fail with an error. - Python: masking of encoded forms. The log mask also covers URL-encoded environment values.
- Java: no
slf4j-simple. The SDK no longer chooses the logging provider for the projects that use it. - Dependencies on the latest stable version in both languages.
5.2.0
- Run token. When the runner delivers the run token in
PROTON_TOKEN, the SDK uses it even if the project file has a different token, and even when the file pins the configuration (config_precedencein Python,proton.config.precedencein Java), which still applies to the address. As long as the file has a token, the SDK warns once in the log, without printing any value. - Python: run data the Java SDK already had.
get_automation_name(),get_dataset_run_status(),get_dataset_by_dataset_run(),get_dataset_info()andget_automation_group_info().
5.1.0
First version under the Proton Cloud SDK name, in both languages.
- Run environment. The SDK reads the variables of the run environment, once per run, and masks the values in the log. See Run environment.
- Dataset category deprecated. The category functions warn in the log that the category doesn't exist in Proton 5 and point to the environment.
- Proton 4 statuses. Proton 5 rejects the "Failed (Dados)", "Failed (Ambiente)" and "In Process" statuses. The SDK sends "Failed" or "Running" instead, with a warning, rather than losing the status.
- Java: new coordinates.
br.com.protoncloud:protoncloud-sdk, replacingbr.com.atomicsolutions.proton:proton-lib. The Java packages haven't changed. The distribution includes the sources jar and the javadoc jar, so the IDE can show the documentation.
5.0.0 (Python)
First version of the protoncloud-sdk package on PyPI, with the usual proton import.
- Address and token resolved from the environment variable, with
proton.inias an alternative. - Output parameter route fixed for Proton 5 (
set-value).