Skip to content

Commit 03b34b6

Browse files
authored
Docker: Fluxbox not rendering Chinese characters via VNC view (#2817)
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent 78ff7f6 commit 03b34b6

File tree

5 files changed

+141
-29
lines changed

5 files changed

+141
-29
lines changed

.github/actions/get-latest-upstream/action.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ runs:
2222
AUTH_HEADER="Authorization: token ${{ inputs.gh_cli_token }}"
2323
if [ "${{ inputs.release }}" = "true" ]; then
2424
echo "Getting the latest stable release."
25-
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')
25+
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[]? | select(.prerelease == false)] | .[0].tag_name')
2626
else
2727
echo "Getting the latest Nightly release."
28-
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == true)] | .[0].tag_name' || echo "")
29-
if [ -z "${RELEASE}" ]; then
28+
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[]? | select(.prerelease == true)] | .[0].tag_name' || echo "")
29+
if [ -z "${RELEASE}" ] || [ "${RELEASE}" = "null" ]; then
3030
echo "Nightly release not found, getting the latest stable release."
31-
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')
31+
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[]? | select(.prerelease == false)] | .[0].tag_name')
3232
fi
3333
fi
3434
jar_file=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases/tags/${RELEASE} | jq -r '.assets[] | select(.name | endswith(".jar")) | .name' | tail -n 1)

Makefile

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -377,17 +377,23 @@ tag_latest:
377377
docker tag $(NAME)/session-queue:$(TAG_VERSION) $(NAME)/session-queue:latest
378378
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:latest
379379
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:latest
380-
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:latest
381380
docker tag $(NAME)/node-chromium:$(TAG_VERSION) $(NAME)/node-chromium:latest
382-
docker tag $(NAME)/node-edge:$(TAG_VERSION) $(NAME)/node-edge:latest
383381
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:latest
384382
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:latest
385-
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:latest
386383
docker tag $(NAME)/standalone-chromium:$(TAG_VERSION) $(NAME)/standalone-chromium:latest
387-
docker tag $(NAME)/standalone-edge:$(TAG_VERSION) $(NAME)/standalone-edge:latest
388384
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:latest
389385
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:latest
390386
docker tag $(NAME)/video:$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) $(NAME)/video:latest
387+
case "$(PLATFORMS)" in *linux/amd64*) \
388+
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:latest && \
389+
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:latest && \
390+
docker tag $(NAME)/node-edge:$(TAG_VERSION) $(NAME)/node-edge:latest && \
391+
docker tag $(NAME)/standalone-edge:$(TAG_VERSION) $(NAME)/standalone-edge:latest \
392+
;; \
393+
*) \
394+
echo "Tagged other images, except Chrome and Edge Node/Standalone don't support platform $(PLATFORMS)" ; \
395+
;; \
396+
esac
391397

392398
release_ffmpeg_latest:
393399
docker push $(NAME)/ffmpeg:latest
@@ -427,17 +433,23 @@ tag_nightly:
427433
docker tag $(NAME)/session-queue:$(TAG_VERSION) $(NAME)/session-queue:nightly
428434
docker tag $(NAME)/event-bus:$(TAG_VERSION) $(NAME)/event-bus:nightly
429435
docker tag $(NAME)/node-base:$(TAG_VERSION) $(NAME)/node-base:nightly
430-
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:nightly
431436
docker tag $(NAME)/node-chromium:$(TAG_VERSION) $(NAME)/node-chromium:nightly
432-
docker tag $(NAME)/node-edge:$(TAG_VERSION) $(NAME)/node-edge:nightly
433437
docker tag $(NAME)/node-firefox:$(TAG_VERSION) $(NAME)/node-firefox:nightly
434438
docker tag $(NAME)/node-docker:$(TAG_VERSION) $(NAME)/node-docker:nightly
435-
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:nightly
436439
docker tag $(NAME)/standalone-chromium:$(TAG_VERSION) $(NAME)/standalone-chromium:nightly
437-
docker tag $(NAME)/standalone-edge:$(TAG_VERSION) $(NAME)/standalone-edge:nightly
438440
docker tag $(NAME)/standalone-firefox:$(TAG_VERSION) $(NAME)/standalone-firefox:nightly
439441
docker tag $(NAME)/standalone-docker:$(TAG_VERSION) $(NAME)/standalone-docker:nightly
440442
docker tag $(NAME)/video:$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) $(NAME)/video:nightly
443+
case "$(PLATFORMS)" in *linux/amd64*) \
444+
docker tag $(NAME)/node-chrome:$(TAG_VERSION) $(NAME)/node-chrome:nightly && \
445+
docker tag $(NAME)/standalone-chrome:$(TAG_VERSION) $(NAME)/standalone-chrome:nightly && \
446+
docker tag $(NAME)/node-edge:$(TAG_VERSION) $(NAME)/node-edge:nightly && \
447+
docker tag $(NAME)/standalone-edge:$(TAG_VERSION) $(NAME)/standalone-edge:nightly \
448+
;; \
449+
*) \
450+
echo "Tagged other images, except Chrome and Edge Node/Standalone don't support platform $(PLATFORMS)" ; \
451+
;; \
452+
esac
441453

442454
release_nightly: release_grid_scaler_nightly
443455
docker push $(NAME)/base:nightly

NodeBase/Dockerfile

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ LABEL authors=${AUTHORS}
88
# Inputs: heads, tags
99
ARG NOVNC_SOURCE="tags"
1010
# Inputs: master, "v1.4.0"
11-
ARG NOVNC_VERSION="v1.5.0"
11+
ARG NOVNC_VERSION="v1.6.0"
1212
# Inputs: heads, tags
1313
ARG WEBSOCKIFY_SOURCE="tags"
1414
# Inputs: master, "v0.11.0"
15-
ARG WEBSOCKIFY_VERSION="v0.12.0"
15+
ARG WEBSOCKIFY_VERSION="v0.13.0"
1616
ARG LANG_WHICH=en
1717
ARG LANG_WHERE=US
1818
ARG ENCODING=UTF-8
@@ -77,21 +77,6 @@ ENV LANG_WHICH=${LANG_WHICH} \
7777

7878
RUN apt-get update -qqy \
7979
&& apt-get -qqy --no-install-recommends install \
80-
#==============
81-
# Xvfb
82-
#==============
83-
xvfb \
84-
libxcb1 \
85-
xauth \
86-
pulseaudio \
87-
#=====
88-
# VNC
89-
#=====
90-
x11vnc x11-utils \
91-
#=========
92-
# Fluxbox (a fast, lightweight and responsive window manager)
93-
#=========
94-
fluxbox eterm hsetroot feh \
9580
#==============================
9681
# Locale and encoding settings
9782
#==============================
@@ -107,13 +92,32 @@ RUN apt-get update -qqy \
10792
fonts-wqy-zenhei \
10893
fonts-tlwg-loma-otf \
10994
fonts-noto-color-emoji \
95+
fonts-noto-cjk \
96+
fonts-indic \
97+
#==============
98+
# Xvfb
99+
#==============
100+
xvfb \
101+
libxcb1 \
102+
xauth \
103+
pulseaudio \
104+
#=====
105+
# VNC
106+
#=====
107+
x11vnc x11-utils \
108+
#=========
109+
# Fluxbox (a fast, lightweight and responsive window manager)
110+
#=========
111+
fluxbox eterm hsetroot feh \
110112
#==============================
111113
# shared system certificate support
112114
#==============================
113115
p11-kit \
114116
p11-kit-modules \
115117
&& locale-gen ${LANGUAGE} \
116118
&& dpkg-reconfigure --frontend noninteractive locales \
119+
# For Fluxbox style, use fonts-wqy-zenhei which has a large international language coverage
120+
&& sed -i 's/Ubuntu-/WenQuanYi Zen Hei-/g' /usr/share/fluxbox/styles/ubuntu-light \
117121
&& apt-get -qyy autoremove \
118122
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
119123
&& apt-get -qyy clean
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# To execute this docker compose yml file use `docker compose -f docker-compose-v3-video-arm64.yml up`
2+
# Add the `-d` flag at the end for detached execution
3+
# To stop the execution, hit Ctrl+C, and then `docker compose -f docker-compose-v3-video-arm64.yml down`
4+
services:
5+
chrome:
6+
deploy:
7+
mode: replicated
8+
replicas: 1
9+
image: selenium/node-chromium:latest
10+
shm_size: 2gb
11+
ports:
12+
- "5900:5900"
13+
depends_on:
14+
- selenium-hub
15+
volumes:
16+
- /tmp/videos:/videos
17+
environment:
18+
- SE_EVENT_BUS_HOST=selenium-hub
19+
- SE_RECORD_VIDEO=true
20+
- SE_VIDEO_FILE_NAME=auto
21+
- SE_NODE_GRID_URL=http://selenium-hub:4444
22+
23+
firefox:
24+
deploy:
25+
mode: replicated
26+
replicas: 1
27+
image: selenium/node-firefox:latest
28+
shm_size: 2gb
29+
ports:
30+
- "5901:5900"
31+
depends_on:
32+
- selenium-hub
33+
volumes:
34+
- /tmp/videos:/videos
35+
environment:
36+
- SE_EVENT_BUS_HOST=selenium-hub
37+
- SE_RECORD_VIDEO=true
38+
- SE_VIDEO_FILE_NAME=auto
39+
- SE_NODE_GRID_URL=http://selenium-hub:4444
40+
41+
selenium-hub:
42+
image: selenium/hub:latest
43+
container_name: selenium-hub
44+
ports:
45+
- "4442:4442"
46+
- "4443:4443"
47+
- "4444:4444"
48+
49+
# File browser to manage the videos from local volume
50+
file_browser:
51+
image: filebrowser/filebrowser:latest
52+
container_name: file_browser
53+
restart: always
54+
ports:
55+
- "8081:80"
56+
volumes:
57+
- /tmp/videos:/srv
58+
environment:
59+
- FB_NOAUTH=true

tests/get_started.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import sys
2+
import time
3+
from selenium import webdriver
4+
from selenium.webdriver.chrome.options import Options as ChromeOptions
5+
from selenium.webdriver.firefox.options import Options as FirefoxOptions
6+
from selenium.webdriver.edge.options import Options as EdgeOptions
7+
8+
if len(sys.argv) < 2:
9+
print("Usage: python3 get_started.py [chrome|firefox|edge]")
10+
sys.exit(1)
11+
browser = sys.argv[1].lower()
12+
if browser not in ["chrome", "firefox", "edge"]:
13+
print("Unsupported browser. Use 'chrome', 'firefox', or 'edge'.")
14+
sys.exit(1)
15+
16+
if len(sys.argv) > 2:
17+
GRID_URL = sys.argv[2]
18+
else:
19+
GRID_URL = "http://localhost:4444/wd/hub"
20+
21+
options = None
22+
if browser == "chrome":
23+
options = ChromeOptions()
24+
elif browser == "firefox":
25+
options = FirefoxOptions()
26+
elif browser == "edge":
27+
options = EdgeOptions()
28+
29+
driver = webdriver.Remote(
30+
command_executor=GRID_URL,
31+
options=options,
32+
)
33+
34+
driver.get('https://www.google.com/')
35+
print(driver.title)
36+
time.sleep(100)
37+
driver.quit()

0 commit comments

Comments
 (0)