moon

Browser automation solution for Kubernetes and Openshift supporting Selenium, Playwright, Puppeteer and Cypress

APACHE-2.0 License

Stars
208
Committers
6

Bot releases are visible (Hide)

moon - v1.9.4: case insensitive user groups

Published by vania-pooh almost 3 years ago

Improvements

  • #302 - case insensitive user groups in OpenID Connect
moon - v1.9.3: using FQDN in DNS resolution

Published by vania-pooh almost 3 years ago

Improvements

  • #295 - preferring FQDN in pod domain name resolution
moon - v1.9.2: better Selenium timeout logic

Published by vania-pooh about 3 years ago

Important

Starting from this release Selenium session idle timeout works a bit differently. Session is now considered idle between the end of previous command and the start of the next command (previously idle time included command execution duration too). The most visible difference can be with page loading in the browser. Previously too slow page loading (sometimes caused by missing firewall rules) led to session timeout and broken tests. Now the same will run forever and should lead to test case timeout. This should allow to easily make distinction between too long idle time between Selenium commands and issues with system under test.

Improvements

  • #291 - bump Golang to 1.17
  • #292 - Kubernetes 1.22 support
  • #293 - always building cypress-moon binaries with CGO_ENABLED=0
  • #294 - disable Selenium session timeout during request processing
moon - v1.9.1: separate test files in Cypress

Published by vania-pooh about 3 years ago

New features

  • #275 - support for custom /etc/hosts entries and DNS servers for Cypress, Playwright and Puppeteer
  • #284 - ability to set nodeSelector globally
  • #285 - ability to run separate test files in Cypress
  • #286 - support for name capability in mobile emulation

Improvements

  • #271 - documentation about labels capability
  • #272 - building video recorder image independently (always on up-to-date base image)
moon - v1.9.0: Cypress support

Published by vania-pooh over 3 years ago

Respective documentation: https://aerokube.com/moon/latest/#_using_cypress

New features

  • #276 - Cypress support

Improvements

  • #277 - firstMatch support in capabilities
  • #278 - removing Host header in Selenium requests
moon - v1.8.3: group support for OpenID Connect

Published by vania-pooh over 3 years ago

New features

  • #265 - group support for OpenID Connect

Improvements

  • #264 - documentation for moon-auth command-line flags
moon - v1.8.2: OpenID Connect support

Published by vania-pooh over 3 years ago

New features

Fixes

  • #253 - video is not recorded for mobile devices with odd screen resolution

Improvements

  • #245 - documentation for root CA feature
  • #254 - run Moon images from non-root user
  • #255 - add Moon images based on RedHat UBI (available in quay.io repository)
  • #259 - do not send "name" capability value in moon-monitor module
moon - v1.8.1: fixing HTTP headers for some Selenium clients

Published by vania-pooh over 3 years ago

Fixes

  • #252 - mobile emulation feature does not work with some Selenium clients
moon - v1.8.0: first-class mobile emulation support

Published by vania-pooh over 3 years ago

New features

  • #247 - mobile emulation support via /mobile API
  • (no issue) - video recording with sound (now works with recent browser images only)

Fixes

  • #250 - setting video frame rate does not work

Improvements

  • #233 - automatically building logger and video recorder for AWS
  • #242, #246, #248 - documentation improvements
  • #243 - automatically uploading Moon images to quay.io
moon - v1.7.1: custom DNS servers support

Published by vania-pooh almost 4 years ago

New features

  • #232 - ability to set custom DNS servers on pods
  • #235 - ability to set log name with logName capability

Improvements

  • #222, #227, #234 - documentation improvements
moon - v1.7.0: better Chrome Developer tools implementation

Published by vania-pooh about 4 years ago

New features

  • #228 - automatically using tmpfs for browser pods
  • #231 - better Chrome Developer Tools protocol support (connecting to web-socket automatically starts browser)

Fixes

  • #225 - invalid escaping in env section
  • #230 - setting runAs in service.json does not work

Improvements

  • #223 - documentation improvements
  • #226 - bump Golang to 1.15
moon - v1.6.1: more Playwright flags

Published by vania-pooh over 4 years ago

New features

  • #217 - name and timeZone parameters support for Playwright

Improvements

  • #216 - improved documentation about Moon timeouts
moon - v1.6.0: Playwright support

Published by vania-pooh over 4 years ago

New features

Improvements

  • #213 - documentation improvements
moon - v1.5.2: DNS resolution improvements

Published by vania-pooh over 4 years ago

This release is a backport of changes stabilizing DNS-resolution logic that will appear in 1.6.x series.

moon - v1.5.1: better container permissions management

Published by vania-pooh over 4 years ago

Fixes

  • #42 - better user permissions behavior for logger and video-recorder

Improvements

  • #207 - do not require fsGroup for browser pods
  • #208, #210, #212 - documentation improvements
moon - v1.5.0: Prometheus monitoring support

Published by vania-pooh over 4 years ago

Breaking Changes

In this release we unified how you should specify resources for browser images in browsers.json and service images in service.json files. You can now specify requests and limits in service.json file as follows:

Before:

{
  "images": {
    "logger": {
      "image": "my-registry.example.com/moon/logger:latest-release",
      "cpu": "0.3",
      "mem": "1024Mi"
    }
  }
}

Now:

{
  "images": {
    "logger": {
      "image": "my-registry.example.com/moon/logger:latest-release",
      "resources": {
        "limits": {
          "cpu": "0.3",
          "memory": "1024Mi"
        },
        "requests": {
          "cpu": "0.3",
          "memory": "1024Mi"
        }
      }
    }
  }
}

Security Changes

In previous releases all browsers pods by default were created with SYS_ADMIN Linux kernel capability. To work in restricted environments starting from this release by default browser pods are created without this capability. This change mainly influences working with Chromium-based browsers. You have two options:

Option 1. Configure Moon to continue running all browser pods with SYS_ADMIN kernel capability. To have this option - just add the following to Moon service.json configuration file:

{
  "kernelCaps": [ "SYS_ADMIN" ]
}

This is what we do by default in our official deployment manifests.

Option 2. Start Chrome with --no-sandbox flag from your test code.

Known Update Issues

When doing a rolling update from 1.4.x series you can see the following messages in moon-api log:

2020/05/21 14:54:45 [STATUS_REQUEST_ERROR] [127.0.0.1] [parse enableVideo: strconv.ParseBool: parsing "": invalid syntax]

These messages will disappear as soon as browser pods created by 1.4.x are deleted.

New Features

  • #128 - ability to configure service account name
  • #139 - Prometheus monitoring support
  • #166 - showing enableVideo in /status API
  • #205 - ability to override requests and limits for service images separately

Improvements

  • #159, #183, #184, #185, #194, #196, #201, #204 - tons of documentation updates
moon - v1.4.2: ability to run in restricted environment without root

Published by vania-pooh over 4 years ago

Notes

Starting from this release Moon does not explicitly set SYS_ADMIN kernel capability by default and is trying to set correct uid and gid for browser pod. SYS_ADMIN capability could be added explicitly as shown in docs.

New features

  • #203 - ability to set custom uid and gid for browser pods
moon - v1.4.1: ability to set smaller resource quota limit

Published by vania-pooh over 4 years ago

Improvements

  • #198 - ability to set pods resource quota manually (and smaller than license allows)
moon - v1.4.0: serviceless browser pods communication

Published by vania-pooh almost 5 years ago

Breaking Changes

In all previous releases Moon was automatically creating a separate Kubernetes service for every new browser pod for network connectivity purposes. Starting from this release these services are not created. Such architectural change leads to times less HTTP requests being sent to Kubernetes API and to improved Selenium session startup time. The only change you need to do in deployment manifests is adding one more service as follows:

apiVersion: v1
kind: Service
metadata:
  name: browsers
  namespace: moon
spec:
  selector:
    moon: browser
  clusterIP: None
  publishNotReadyAddresses: true

The name of the service should correspond to the value of Moon -domain-name flag (default is browsers). All required changes were already done in our official deployment manifests.

New Features

  • #176 - capability to set S3 key pattern
  • #177 - logging name capability during session creation
  • #180 - serviceless browser pods communication

Improvements

  • #173 - document default memory and cpu limits for service containers
  • #175 - improve documentation about turning off Kubernetes cache
moon - v1.3.9: Chrome Devtools protocol support

Published by vania-pooh almost 5 years ago

New features

  • #157 - Chrome Devtools protocol support
  • #164, #174 - labels capability support
  • #167 - ability to turn off Linux capabilities
  • #169 - ability to customize -moon-url parameters

Improvements

  • #154, #164 - recommended Kubernetes cluster documentation
  • #165 - documentation about using Moon in cloud platforms
  • #171 - better logging during S3 initialization
Related Projects