Skip to content

Commit ae4808a

Browse files
committedApr 12, 2024
[test][dynamic-grid]: share node-docker volume mappings for generated browser containers
Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
1 parent 6daa776 commit ae4808a

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed
 

‎Makefile

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ test_firefox_standalone:
389389
VERSION=$(TAG_VERSION) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) ./tests/bootstrap.sh StandaloneFirefox
390390

391391
test_parallel: hub chrome firefox edge
392+
sudo rm -rf ./tests/tests
392393
for node in DeploymentAutoscaling JobAutoscaling ; do \
393394
cd ./tests || true ; \
394395
echo TAG=$(TAG_VERSION) > .env ; \
@@ -406,7 +407,8 @@ test_parallel: hub chrome firefox edge
406407
# Its main purpose is to check that a video file was generated.
407408
test_video: video hub chrome firefox edge
408409
# Running a few tests with docker compose to generate the videos
409-
rm -rf ./tests/videos; mkdir -p ./tests/videos
410+
sudo rm -rf ./tests/tests
411+
sudo rm -rf ./tests/videos; mkdir -p ./tests/videos
410412
for node in NodeChrome NodeFirefox NodeEdge ; do \
411413
cd ./tests || true ; \
412414
echo VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) > .env ; \
@@ -435,17 +437,21 @@ test_video: video hub chrome firefox edge
435437
docker run -u $$(id -u) -v $$(pwd):$$(pwd) -w $$(pwd) $(FFMPEG_BASED_NAME)/ffmpeg:$(FFMPEG_BASED_TAG) -v error -i ./tests/videos/edge_video.mp4 -f null - 2>error.log
436438

437439
test_node_docker: hub standalone_docker standalone_chrome standalone_firefox standalone_edge video
438-
rm -rf ./tests/videos; mkdir -p ./tests/videos
439-
sudo chmod 777 ./tests/videos
440+
sudo rm -rf ./tests/tests
441+
sudo rm -rf ./tests/videos; mkdir -p ./tests/videos/Downloads
442+
sudo chmod -R 777 ./tests/videos
440443
for node in DeploymentAutoscaling JobAutoscaling ; do \
441444
cd tests || true ; \
445+
DOWNLOADS_DIR="./videos/Downloads" ; \
446+
sudo rm -rf $$DOWNLOADS_DIR/* ; \
442447
echo NAMESPACE=$(NAME) > .env ; \
443448
echo TAG=$(TAG_VERSION) >> .env ; \
444449
echo VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) >> .env ; \
445450
echo TEST_DRAIN_AFTER_SESSION_COUNT=$(or $(TEST_DRAIN_AFTER_SESSION_COUNT), 0) >> .env ; \
446451
echo TEST_PARALLEL_HARDENING=$(or $(TEST_PARALLEL_HARDENING), "false") >> .env ; \
447452
echo LOG_LEVEL=$(or $(LOG_LEVEL), "INFO") >> .env ; \
448453
echo REQUEST_TIMEOUT=$(or $(REQUEST_TIMEOUT), 300) >> .env ; \
454+
echo SELENIUM_ENABLE_MANAGED_DOWNLOADS=$(or $(SELENIUM_ENABLE_MANAGED_DOWNLOADS), "false") >> .env ; \
449455
echo NODE=$$node >> .env ; \
450456
echo UID=$$(id -u) >> .env ; \
451457
echo BINDING_VERSION=$(BINDING_VERSION) >> .env ; \
@@ -454,6 +460,10 @@ test_node_docker: hub standalone_docker standalone_chrome standalone_firefox sta
454460
envsubst < config.toml > ./videos/config.toml ; \
455461
docker compose -f docker-compose-v3-test-node-docker.yaml up --no-log-prefix --exit-code-from tests --build ; \
456462
if [ $$? -ne 0 ]; then exit 1; fi ; \
463+
if [ -d "$$DOWNLOADS_DIR" ] && [ $$(ls -1q $$DOWNLOADS_DIR | wc -l) -eq 0 ]; then \
464+
echo "Mounted downloads directory is empty. Downloaded files could not be retrieved!" ; \
465+
exit 1 ; \
466+
fi ; \
457467
done
458468

459469
test_custom_ca_cert:

‎tests/SeleniumTests/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
SELENIUM_GRID_USERNAME = os.environ.get('SELENIUM_GRID_USERNAME', '')
1818
SELENIUM_GRID_PASSWORD = os.environ.get('SELENIUM_GRID_PASSWORD', '')
1919
SELENIUM_GRID_TEST_HEADLESS = os.environ.get('SELENIUM_GRID_TEST_HEADLESS', 'false').lower() == 'true'
20+
SELENIUM_ENABLE_MANAGED_DOWNLOADS = os.environ.get('SELENIUM_ENABLE_MANAGED_DOWNLOADS', 'true').lower() == 'true'
2021
WEB_DRIVER_WAIT_TIMEOUT = int(os.environ.get('WEB_DRIVER_WAIT_TIMEOUT', 60))
2122
TEST_PARALLEL_HARDENING = os.environ.get('TEST_PARALLEL_HARDENING', 'false').lower() == 'true'
2223

@@ -90,6 +91,9 @@ def test_download_file(self):
9091
)
9192
driver.execute_script("arguments[0].scrollIntoView();", file_link)
9293
file_link.click()
94+
if not SELENIUM_ENABLE_MANAGED_DOWNLOADS:
95+
time.sleep(4)
96+
return
9397
wait.until(
9498
lambda d: str(d.get_downloadable_files()[0]).endswith(file_name)
9599
)
@@ -108,7 +112,7 @@ class ChromeTests(SeleniumGenericTests):
108112
def setUp(self):
109113
try:
110114
options = ChromeOptions()
111-
options.enable_downloads = True
115+
options.enable_downloads = SELENIUM_ENABLE_MANAGED_DOWNLOADS
112116
options.add_argument('disable-features=DownloadBubble,DownloadBubbleV2')
113117
options.set_capability('se:recordVideo', True)
114118
if SELENIUM_GRID_TEST_HEADLESS:
@@ -129,7 +133,7 @@ class EdgeTests(SeleniumGenericTests):
129133
def setUp(self):
130134
try:
131135
options = EdgeOptions()
132-
options.enable_downloads = True
136+
options.enable_downloads = SELENIUM_ENABLE_MANAGED_DOWNLOADS
133137
options.add_argument('disable-features=DownloadBubble,DownloadBubbleV2')
134138
options.set_capability('se:recordVideo', True)
135139
if SELENIUM_GRID_TEST_HEADLESS:
@@ -154,7 +158,7 @@ def setUp(self):
154158
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "*/*")
155159
options = FirefoxOptions()
156160
options.profile = profile
157-
options.enable_downloads = True
161+
options.enable_downloads = SELENIUM_ENABLE_MANAGED_DOWNLOADS
158162
options.set_capability('se:recordVideo', True)
159163
if SELENIUM_GRID_TEST_HEADLESS:
160164
options.add_argument('-headless')

‎tests/config.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ configs = [
55
"${NAMESPACE}/standalone-edge:${TAG}", '{"browserName": "MicrosoftEdge", "platformName": "linux"}'
66
]
77

8-
host-config-keys = ["Dns", "DnsOptions", "DnsSearch", "ExtraHosts"]
8+
host-config-keys = ["Dns", "DnsOptions", "DnsSearch", "ExtraHosts", "Binds"]
99

1010
url = "http://127.0.0.1:2375"
1111

1212
video-image = "${NAMESPACE}/video:${VIDEO_TAG}"
1313

1414
[node]
15-
enable-managed-downloads = true
15+
enable-managed-downloads = "${SELENIUM_ENABLE_MANAGED_DOWNLOADS}"
1616
override-max-sessions = true
17-
max-sessions = 4
17+
max-sessions = 3

‎tests/docker-compose-v3-test-node-docker.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
- ./videos:/opt/selenium/assets
88
- ./videos/config.toml:/opt/bin/config.toml
99
- /var/run/docker.sock:/var/run/docker.sock
10+
- ./videos/Downloads:/home/seluser/Downloads
1011
dns:
1112
- 8.8.8.8
1213
- 8.8.4.4
@@ -19,7 +20,7 @@ services:
1920
- SE_EVENT_BUS_HOST=selenium-hub
2021
- SE_EVENT_BUS_PUBLISH_PORT=4442
2122
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
22-
- SE_NODE_ENABLE_MANAGED_DOWNLOADS=true
23+
- SE_NODE_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS}
2324
- SE_LOG_LEVEL=${LOG_LEVEL}
2425

2526
selenium-hub:
@@ -45,4 +46,5 @@ services:
4546
- RUN_IN_DOCKER_COMPOSE=true
4647
- SELENIUM_GRID_HOST=selenium-hub
4748
- BINDING_VERSION=${BINDING_VERSION}
49+
- SELENIUM_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS}
4850
command: ["./bootstrap.sh", "${NODE}"]

0 commit comments

Comments
 (0)