[openstreetmap/openstreetmap-website] NodeJS versions are out of sync again (Issue #5010)

Emin Kocan notifications at github.com
Wed Jul 31 22:04:49 UTC 2024


Since I couldn't get the build working on Ubuntu 24.04, I tried using a Docker image based on Debian 12.6. The build itself works fine, but when running tests, I encounter Selenium errors, specifically:

`Selenium::WebDriver::Error::InvalidSessionIdError: Tried to run command without establishing a connection`

After some investigation with a colleague, we discovered that the issue arises from the parallelization of tests. Reducing the number of processors used during testing to 1 or 2 resolves the issue, but running tests with the default settings results in errors.

**Few remarks:**
- Could this issue be related to the OS itself? Has anyone encountered a similar problem when running on Ubuntu?
- Does it make sense to push forward with Debian and investigate this further, or should we focus on making Ubuntu 24.04 work? There are some open issues with `mini_racer` during the container build, which might be related to the failures encountered during `bundle install`.

---

#### Logs:
```bash
..........................E

Error:
UserSignupTest#test_Show_OpenID_form_when_OpenID_provider_button_is_clicked:
Selenium::WebDriver::Error::UnknownError: Failed to decode response from marionette
    test/system/user_signup_test.rb:15:in `block in <class:UserSignupTest>'

Error:
UserSignupTest#test_Show_OpenID_form_when_OpenID_provider_button_is_clicked:
Selenium::WebDriver::Error::InvalidSessionIdError: Tried to run command without establishing a connection
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:41:in `error'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:101:in `new'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/bridge.rb:292:in `screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/driver.rb:333:in `screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:58:in `screenshot_as'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:60:in `screenshot_as'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `block in save_screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `open'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/selenium/driver.rb:152:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/session.rb:748:in `block in save_screenshot'
    <internal:kernel>:90:in `tap'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/session.rb:748:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:106:in `save_image'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:36:in `take_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:47:in `take_failed_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb:8:in `before_teardown'

Error:
UserSignupTest#test_Show_OpenID_form_when_OpenID_provider_button_is_clicked:
Selenium::WebDriver::Error::InvalidSessionIdError: Tried to run command without establishing a connection
    test/application_system_test_case.rb:22:in `after_teardown'


bin/rails test test/system/user_signup_test.rb:12

E

Error:
UserSignupTest#test_Sign_up_from_login_page:
Selenium::WebDriver::Error::UnknownError: Failed to decode response from marionette
    test/system/user_signup_test.rb:7:in `block in <class:UserSignupTest>'

Error:
UserSignupTest#test_Sign_up_from_login_page:
Selenium::WebDriver::Error::InvalidSessionIdError: Tried to run command without establishing a connection
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:62:in `add_cause'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:41:in `error'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:101:in `new'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:101:in `create_response'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/default.rb:103:in `request'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/bridge.rb:675:in `execute'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/remote/bridge.rb:292:in `screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/driver.rb:333:in `screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:58:in `screenshot_as'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:60:in `screenshot_as'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `block in save_screenshot'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `open'
    /var/lib/gems/3.1.0/gems/selenium-webdriver-4.23.0/lib/selenium/webdriver/common/takes_screenshot.rb:39:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/selenium/driver.rb:152:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/session.rb:748:in `block in save_screenshot'
    <internal:kernel>:90:in `tap'
    /var/lib/gems/3.1.0/gems/capybara-3.40.0/lib/capybara/session.rb:748:in `save_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:106:in `save_image'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:36:in `take_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb:47:in `take_failed_screenshot'
    /var/lib/gems/3.1.0/gems/actionpack-7.1.3.4/lib/action_dispatch/system_testing/test_helpers/setup_and_teardown.rb:8:in `before_teardown'

Error:
UserSignupTest#test_Sign_up_from_login_page:
Selenium::WebDriver::Error::InvalidSessionIdError: Tried to run command without establishing a connection
    test/application_system_test_case.rb:22:in `after_teardown'
```

#### Docker Image:
```Dockerfile
FROM debian:12.6

ENV DEBIAN_FRONTEND=noninteractive

# Install system packages then clean up to minimize image size
RUN apt-get update \
  && apt-get install --no-install-recommends -y \
  build-essential \
  curl \
  default-jre-headless \
  file \
  git-core \
  gpg-agent \
  libarchive-dev \
  libffi-dev \
  libgd-dev \
  libpq-dev \
  libsasl2-dev \
  libvips-dev \
  libxml2-dev \
  libxslt1-dev \
  libyaml-dev \
  locales \
  postgresql-client \
  ruby \
  ruby-dev \
  ruby-bundler \
  software-properties-common \
  tzdata \
  unzip \
  nodejs \
  npm

# Install yarn globally
RUN npm install --global yarn

# Install geckodriver and firefox
RUN apt-get update                             \
  && apt-get install -y --no-install-recommends \
  ca-certificates curl firefox-esr           \
  && curl -L https://github.com/mozilla/geckodriver/releases/download/v0.34.0/geckodriver-v0.34.0-linux64.tar.gz | tar xz -C /usr/local/bin

# Install compatible Osmosis to help users import sample data in a new instance
RUN curl -OL https://github.com/openstreetmap/osmosis/releases/download/0.47.2/osmosis-0.47.2.tgz \
  && tar -C /usr/local -xzf osmosis-0.47.2.tgz

ENV DEBIAN_FRONTEND=dialog

# Setup app location
RUN mkdir -p /app
WORKDIR /app

# Install Ruby packages
ADD Gemfile Gemfile.lock /app/
RUN bundle install

# Install NodeJS packages using yarn
ADD package.json yarn.lock /app/
ADD bin/yarn /app/bin/
RUN bundle exec bin/yarn install

```

-- 
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/openstreetmap-website/issues/5010#issuecomment-2261537069
You are receiving this because you are subscribed to this thread.

Message ID: <openstreetmap/openstreetmap-website/issues/5010/2261537069 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/rails-dev/attachments/20240731/26669e01/attachment-0001.htm>


More information about the rails-dev mailing list