Skip to main content
Proton v5

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_end in Python (run_components(localizar, close_at_end=[navegador]), with objects that have close() or functions such as driver.quit) and ProtonComponentRunner.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 and ProtonComponentRunner.runEvidenceDir() in Java return evidencias/<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 in evidencias is still uploaded. See Evidence folder in Python and Java.
  • Failure before the first step. record_failure(erro) and record_failure(erro, motivo) in Python, and ProtonComponentRunner.recordFailure(erro) and recordFailure(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: ProtonEnvironmentFailure in Python and ProtonEnvironmentError in Java. A library's exception can state its own reason (the failure_reason attribute in Python, the ProtonFailure interface in Java). The reason is also looked up in the error's causes (failure_reason in Python, FailureReason.of in Java), and the run environment read error (ProtonEnvironmentError in Python, ProtonEnvironmentException in 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-empty idDatasetRun, and ProtonEnv.isProtonExecution() is now public in Java.
  • Device chosen at trigger time. In Python, get_dataset_run_info() includes deviceFarm and deviceOsVersion. 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, and getBStackDeviceOsVersion() 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_error and log_critical in Python, logInfo, logWarning, logError and logCritical in 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 ProtonBusinessError in 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-Id and traceparent) and offers it to the calls the automation makes: correlation_headers() in Python and ProtonEnv.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_components in Python and ProtonComponentRunner in Java. See Component executor and the template projects.
  • Python: output with + or %. The value reaches Proton intact. Before, a + turned into a space (a +55 phone 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_precedence in Python, proton.config.precedence in 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() and get_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, replacing br.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.ini as an alternative.
  • Output parameter route fixed for Proton 5 (set-value).