Hi Scott,
Thanks for the further details.
As a general rule, I recommend always pinning the versions in the conda.yaml file – at least down to the minor version.
That way, you’ll include patch releases when rebuilding, but you won’t run the risk of jumping straight to a major version.
(I don’t consider a severe problem with Node.js, but in case of a library it could lead to incompatibilities…)
Yes, exactly, but:
The Robotmk Scheduler builds the environments via RCC only on restart (= i.e. when you restart the Checkmk agent, the Scheduler also restarts).
RCC then creates an environment under two conditions:
- The environment does not yet exist
- The environment exists, but the hash of the conda.yaml file has changed (e.g. due to version changes or changes to the packages). The changes must be semantic; whitespaces, newlines and also comments do not count.
What doesn’t work, however: not specifying a version and expecting that RCC will keep the package up to date during operation, so that you always remain up to date.
The latest version of a package is only fetched at the time when the environment is actually (re)built.
In your case, it would therefore have been sufficient to pin NodeJS to a specific version and restart the CheckMK agent.
Yes, in that case you won’t get a WebKit browser – and you won’t have a Brotli dependency either.
That’s fine.
Your approach to cleaning things up was exemplary! 
That purges all the environments.
Alternatively, you could also remove the rcc_home directory, as it contains all the environments, and restart the scheduler.
Oh, and one more thing: the Browser Library documentation has since been completely revamped and it’s turned out really well.
The “Browser-batteries” package is now the recommended method, I’ve updated my training materials accordingly.
It’s very handy that the library version now always comes with a matching Node version as a binary in the wheel.
In my conda example above, I made one mistake: rfbrowser init is the command for installing the Node dependencies (including downloading the browser(s)).
However, if you’re using browser-batteries, rfbrowser install is the correct command, which only installs the browsers (the Node dependencies are included with the wheel).
So the correct conda.yaml is:
channels:
- conda-forge
dependencies:
- python=3.12
- pip=23.2.1
- pip:
- robotframework>=7.5
- robotframework-browser[bb]>=21.0
rccPostInstall:
- rfbrowser install chromium
Best regards,
Simon