@@ -67,12 +67,14 @@ build: all
67
67
68
68
ci : build test
69
69
70
- gen_certs :
70
+ prepare_resources :
71
71
rm -rf ./Base/configs/node && mkdir -p ./Base/configs/node && cp -r ./charts/selenium-grid/configs/node ./Base/configs
72
+
73
+ gen_certs :
72
74
rm -rf ./Base/certs && cp -r ./charts/selenium-grid/certs ./Base
73
75
./Base/certs/gen-cert-helper.sh -d ./Base/certs
74
76
75
- base : gen_certs
77
+ base : prepare_resources gen_certs
76
78
cd ./Base && docker buildx build --platform $(PLATFORMS ) $(BUILD_ARGS ) --build-arg VERSION=$(BASE_VERSION ) --build-arg RELEASE=$(BASE_RELEASE ) --build-arg AUTHORS=$(AUTHORS ) -t $(NAME ) /base:$(TAG_VERSION ) .
77
79
78
80
base_nightly :
@@ -580,24 +582,31 @@ test_parallel: hub chrome firefox edge chromium
580
582
echo SELENIUM_GRID_PROTOCOL=https >> .env ; \
581
583
echo CHART_CERT_PATH=$$(readlink -f ./videos/certs/tls.crt ) >> .env ; \
582
584
export $$(cat .env | xargs ) ; \
583
- DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose --profile $(PLATFORMS ) -f docker-compose-v3-test-parallel.yml up -d --no-log-prefix ; \
585
+ DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose --profile $(PLATFORMS ) -f docker-compose-v3-test-parallel.yml up -d --remove-orphans -- no-log-prefix ; \
584
586
RUN_IN_DOCKER_COMPOSE=true bash ./bootstrap.sh $$ node ; \
585
587
done ; \
586
588
docker compose -f docker-compose-v3-test-parallel.yml down
587
589
590
+ test_video_standalone : standalone_chrome standalone_chromium standalone_firefox standalone_edge
591
+ DOCKER_COMPOSE_FILE=docker-compose-v3-test-standalone.yml make test_video
592
+
588
593
test_video_dynamic_name :
589
- VIDEO_FILE_NAME=auto TEST_DELAY_AFTER_TEST=0 \
594
+ VIDEO_FILE_NAME=auto \
590
595
make test_video
591
596
592
597
# This should run on its own CI job. There is no need to combine it with the other tests.
593
598
# Its main purpose is to check that a video file was generated.
594
599
test_video : video hub chrome firefox edge chromium
595
600
sudo rm -rf ./tests/tests
596
- sudo rm -rf ./tests/videos; mkdir -p ./tests/videos
601
+ sudo rm -rf ./tests/videos; mkdir -p ./tests/videos/upload
602
+ sudo chmod -R 777 ./tests/videos
603
+ docker_compose_file=$(or $(DOCKER_COMPOSE_FILE ) , docker-compose-v3-test-video.yml) ; \
604
+ list_of_tests_amd64=$(or $(LIST_OF_TESTS_AMD64 ) , "NodeChrome NodeChromium NodeFirefox NodeEdge") ; \
605
+ list_of_tests_arm64=$(or $(LIST_OF_TESTS_ARM64 ) , "NodeChromium NodeFirefox") ; \
597
606
if [ " $( PLATFORMS) " = " linux/amd64" ]; then \
598
- list_nodes=" NodeChrome NodeChromium NodeFirefox NodeEdge " ; \
607
+ list_nodes=" $$ {list_of_tests_amd64} " ; \
599
608
else \
600
- list_nodes=" NodeChromium NodeFirefox " ; \
609
+ list_nodes=" ${list_of_tests_arm64} " ; \
601
610
fi ; \
602
611
for node in $$ {list_nodes}; do \
603
612
cd ./tests || true ; \
@@ -607,6 +616,10 @@ test_video: video hub chrome firefox edge chromium
607
616
echo UID=$$(id -u ) >> .env ; \
608
617
echo BINDING_VERSION=$(BINDING_VERSION ) >> .env ; \
609
618
echo TEST_DELAY_AFTER_TEST=$(or $(TEST_DELAY_AFTER_TEST ) , 0) >> .env ; \
619
+ echo SELENIUM_ENABLE_MANAGED_DOWNLOADS=$(or $(SELENIUM_ENABLE_MANAGED_DOWNLOADS ) , "true") >> .env ; \
620
+ echo BASIC_AUTH_USERNAME=$(or $(BASIC_AUTH_USERNAME ) , "admin") >> .env ; \
621
+ echo BASIC_AUTH_PASSWORD=$(or $(BASIC_AUTH_PASSWORD ) , "admin") >> .env ; \
622
+ echo SUB_PATH=$(or $(SUB_PATH ) , "/selenium") >> .env ; \
610
623
if [ $$ node = " NodeChrome" ] ; then \
611
624
echo BROWSER=chrome >> .env ; \
612
625
echo VIDEO_FILE_NAME=$$ {VIDEO_FILE_NAME:-" chrome_video.mp4" } >> .env ; \
@@ -627,7 +640,7 @@ test_video: video hub chrome firefox edge chromium
627
640
echo VIDEO_FILE_NAME=$$ {VIDEO_FILE_NAME:-" firefox_video.mp4" } >> .env ; \
628
641
echo VIDEO_FILE_NAME_SUFFIX=$$ {VIDEO_FILE_NAME_SUFFIX:-" true" } >> .env ; \
629
642
fi ; \
630
- DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose -f docker-compose-v3-test-video.yml up --abort-on-container-exit ; \
643
+ DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose -f $$ {docker_compose_file} up --remove-orphans --build --exit-code-from tests ; \
631
644
done
632
645
make test_video_integrity
633
646
@@ -676,18 +689,27 @@ test_node_relay: hub node_base standalone_firefox
676
689
fi ; \
677
690
export $$(cat .env | xargs ) ; \
678
691
envsubst < relay_config.toml > ./videos/relay_config.toml ; \
679
- DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose --profile $$ node -f docker-compose-v3-test-node-relay.yml up --no-log-prefix --exit-code-from tests ; \
692
+ DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose --profile $$ node -f docker-compose-v3-test-node-relay.yml up --remove-orphans -- no-log-prefix --build --exit-code-from tests ; \
680
693
if [ $$ ? -ne 0 ]; then exit 1; fi ; \
681
694
done
682
695
696
+ test_standalone_docker : standalone_docker
697
+ DOCKER_COMPOSE_FILE=docker-compose-v3-test-standalone-docker.yaml CONFIG_FILE=standalone_docker_config.toml \
698
+ RECORD_STANDALONE=true GRID_URL=http://0.0.0.0:4444 LIST_OF_TESTS_AMD64=" DeploymentAutoscaling" TEST_PARALLEL_HARDENING=true \
699
+ SELENIUM_ENABLE_MANAGED_DOWNLOADS=true LOG_LEVEL=SEVERE SKIP_CHECK_DOWNLOADS_VOLUME=true make test_node_docker
700
+
683
701
test_node_docker : hub standalone_docker standalone_chrome standalone_firefox standalone_edge standalone_chromium video
684
702
sudo rm -rf ./tests/tests
685
- sudo rm -rf ./tests/videos; mkdir -p ./tests/videos/Downloads
703
+ sudo rm -rf ./tests/videos; mkdir -p ./tests/videos/Downloads; mkdir -p ./tests/videos/upload
686
704
sudo chmod -R 777 ./tests/videos
705
+ docker_compose_file=$(or $(DOCKER_COMPOSE_FILE ) , docker-compose-v3-test-node-docker.yaml) ; \
706
+ config_file=$(or $(CONFIG_FILE ) , config.toml) ; \
707
+ list_of_tests_amd64=$(or $(LIST_OF_TESTS_AMD64 ) , "NodeChrome NodeChromium NodeFirefox NodeEdge") ; \
708
+ list_of_tests_arm64=$(or $(LIST_OF_TESTS_ARM64 ) , "NodeChromium NodeFirefox") ; \
687
709
if [ " $( PLATFORMS) " = " linux/amd64" ]; then \
688
- list_nodes=" NodeChrome NodeChromium NodeFirefox NodeEdge " ; \
710
+ list_nodes=" $$ {list_of_tests_amd64} " ; \
689
711
else \
690
- list_nodes=" NodeChromium NodeFirefox " ; \
712
+ list_nodes=" $$ {list_of_tests_arm64} " ; \
691
713
fi ; \
692
714
for node in $$ {list_nodes} ; do \
693
715
cd tests || true ; \
@@ -702,6 +724,8 @@ test_node_docker: hub standalone_docker standalone_chrome standalone_firefox sta
702
724
echo REQUEST_TIMEOUT=$(or $(REQUEST_TIMEOUT ) , 300) >> .env ; \
703
725
echo SELENIUM_ENABLE_MANAGED_DOWNLOADS=$(or $(SELENIUM_ENABLE_MANAGED_DOWNLOADS ) , "false") >> .env ; \
704
726
echo TEST_DELAY_AFTER_TEST=$(or $(TEST_DELAY_AFTER_TEST ) , 0) >> .env ; \
727
+ echo RECORD_STANDALONE=$(or $(RECORD_STANDALONE ) , "true") >> .env ; \
728
+ echo GRID_URL=$(or $(GRID_URL ) , "") >> .env ; \
705
729
echo NODE=$$ node >> .env ; \
706
730
echo UID=$$(id -u ) >> .env ; \
707
731
echo BINDING_VERSION=$(BINDING_VERSION ) >> .env ; \
@@ -716,64 +740,20 @@ test_node_docker: hub standalone_docker standalone_chrome standalone_firefox sta
716
740
fi ; \
717
741
if [ $$ node = " NodeChromium" ] ; then \
718
742
echo NODE_CHROME=chromium >> .env ; \
743
+ else \
744
+ echo NODE_CHROME=chromium >> .env ; \
719
745
fi ; \
720
746
export $$(cat .env | xargs ) ; \
721
- envsubst < config.toml > ./videos/config.toml ; \
722
- DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose -f docker-compose-v3-test-node-docker.yaml up --no-log-prefix --exit-code-from tests ; \
747
+ envsubst < $$ {config_file} > ./videos/config.toml ; \
748
+ DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose -f $$ {docker_compose_file} up --remove-orphans --no-log-prefix --build --exit-code-from tests ; \
723
749
if [ $$ ? -ne 0 ]; then exit 1; fi ; \
724
- if [ -d " $$ DOWNLOADS_DIR" ] && [ $$ (ls -1q $$ DOWNLOADS_DIR | wc -l) -eq 0 ]; then \
750
+ if [ " $$ SKIP_CHECK_DOWNLOADS_VOLUME " != " true " ] && [ -d " $$ DOWNLOADS_DIR" ] && [ $$ (ls -1q $$ DOWNLOADS_DIR | wc -l) -eq 0 ]; then \
725
751
echo " Mounted downloads directory is empty. Downloaded files could not be retrieved!" ; \
726
752
exit 1 ; \
727
753
fi ; \
728
754
done
729
755
make test_video_integrity
730
756
731
- test_standalone_docker : standalone_docker standalone_chrome standalone_firefox standalone_edge standalone_chromium video
732
- sudo rm -rf ./tests/tests
733
- sudo rm -rf ./tests/videos; mkdir -p ./tests/videos/Downloads
734
- sudo chmod -R 777 ./tests/videos
735
- if [ " $( PLATFORMS) " = " linux/amd64" ]; then \
736
- list_nodes=" DeploymentAutoscaling" ; \
737
- else \
738
- list_nodes=" NodeChromium NodeFirefox" ; \
739
- fi ; \
740
- for node in $$ {list_nodes} ; do \
741
- cd tests || true ; \
742
- DOWNLOADS_DIR=" ./videos/Downloads" ; \
743
- sudo rm -rf $$ DOWNLOADS_DIR/* ; \
744
- echo NAMESPACE=$(NAME ) > .env ; \
745
- echo TAG=$(TAG_VERSION ) >> .env ; \
746
- echo VIDEO_TAG=$(FFMPEG_TAG_VERSION ) -$(BUILD_DATE ) >> .env ; \
747
- echo TEST_DRAIN_AFTER_SESSION_COUNT=$(or $(TEST_DRAIN_AFTER_SESSION_COUNT ) , 0) >> .env ; \
748
- echo TEST_PARALLEL_HARDENING=$(or $(TEST_PARALLEL_HARDENING ) , "true") >> .env ; \
749
- echo LOG_LEVEL=$(or $(LOG_LEVEL ) , "INFO") >> .env ; \
750
- echo REQUEST_TIMEOUT=$(or $(REQUEST_TIMEOUT ) , 300) >> .env ; \
751
- echo SELENIUM_ENABLE_MANAGED_DOWNLOADS=$(or $(SELENIUM_ENABLE_MANAGED_DOWNLOADS ) , "true") >> .env ; \
752
- echo TEST_DELAY_AFTER_TEST=$(or $(TEST_DELAY_AFTER_TEST ) , 0) >> .env ; \
753
- echo NODE=$$ node >> .env ; \
754
- echo UID=$$(id -u ) >> .env ; \
755
- echo BINDING_VERSION=$(BINDING_VERSION ) >> .env ; \
756
- echo HOST_IP=$$(hostname -I | awk '{print $$1}' ) >> .env ; \
757
- if [ " $( PLATFORMS) " = " linux/amd64" ]; then \
758
- echo NODE_EDGE=edge >> .env ; \
759
- else \
760
- echo NODE_EDGE=chromium >> .env ; \
761
- fi ; \
762
- if [ $$ node = " NodeChrome" ] ; then \
763
- echo NODE_CHROME=chrome >> .env ; \
764
- fi ; \
765
- if [ $$ node = " NodeChromium" ] ; then \
766
- echo NODE_CHROME=chromium >> .env ; \
767
- else \
768
- echo NODE_CHROME=chromium >> .env ; \
769
- fi ; \
770
- export $$(cat .env | xargs ) ; \
771
- envsubst < standalone_docker_config.toml > ./videos/config.toml ; \
772
- DOCKER_DEFAULT_PLATFORM=$(PLATFORMS ) docker compose -f docker-compose-v3-test-standalone-docker.yaml up --no-log-prefix --build --exit-code-from tests ; \
773
- if [ $$ ? -ne 0 ]; then exit 1; fi ; \
774
- done
775
- make test_video_integrity
776
-
777
757
test_custom_ca_cert :
778
758
VERSION=$(TAG_VERSION ) NAMESPACE=$(NAMESPACE ) ./tests/customCACert/bootstrap.sh
779
759
@@ -800,7 +780,7 @@ test_video_integrity:
800
780
# Using ffmpeg to verify file integrity
801
781
# https://superuser.com/questions/100288/how-can-i-check-the-integrity-of-a-video-file-avi-mpeg-mp4
802
782
list_files=$$(find ./tests/videos -type f -name "*.mp4" ) ; \
803
- echo " Number of video files: $$ (echo $$ list_files | wc -w)" ; \
783
+ echo " ::warning:: Number of video files: $$ (echo $$ list_files | wc -w)" ; \
804
784
number_corrupted_files=0; \
805
785
if [ -z " $$ list_files" ]; then \
806
786
echo " No video files found" ; \
@@ -827,8 +807,8 @@ chart_render_template:
827
807
RENDER_HELM_TEMPLATE_ONLY=true make chart_test_autoscaling_disabled chart_test_autoscaling_deployment_https chart_test_autoscaling_deployment chart_test_autoscaling_job_https chart_test_autoscaling_job_hostname chart_test_autoscaling_job
828
808
829
809
chart_test_autoscaling_disabled :
830
- PLATFORMS=$(PLATFORMS ) TEST_CHROMIUM=true RELEASE_NAME=selenium SELENIUM_GRID_AUTOSCALING=false TEST_DELAY_AFTER_TEST=0 CHART_ENABLE_TRACING=true \
831
- SECURE_INGRESS_ONLY_GENERATE=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -i ) SELENIUM_GRID_PORT=443 \
810
+ PLATFORMS=$(PLATFORMS ) TEST_CHROMIUM=true RELEASE_NAME=selenium SELENIUM_GRID_AUTOSCALING=false CHART_ENABLE_TRACING=true \
811
+ SECURE_INGRESS_ONLY_GENERATE=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -i ) SELENIUM_GRID_PORT=443 EXTERNAL_UPLOADER_CONFIG=true \
832
812
VERSION=$(TAG_VERSION ) VIDEO_TAG=$(FFMPEG_TAG_VERSION ) -$(BUILD_DATE ) NAMESPACE=$(NAMESPACE ) BINDING_VERSION=$(BINDING_VERSION ) \
833
813
TEMPLATE_OUTPUT_FILENAME=" k8s_nodeChromium_enableTracing_secureIngress_generateCerts_ingressPublicIP_subPath.yaml" \
834
814
./tests/charts/make/chart_test.sh NoAutoscaling
@@ -852,7 +832,7 @@ chart_test_autoscaling_deployment:
852
832
chart_test_autoscaling_job_https :
853
833
PLATFORMS=$(PLATFORMS ) TEST_EXISTING_KEDA=true RELEASE_NAME=selenium CHART_ENABLE_BASIC_AUTH=true \
854
834
SECURE_CONNECTION_SERVER=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_PORT=443 SUB_PATH=/ \
855
- VERSION=$(TAG_VERSION ) VIDEO_TAG=$(FFMPEG_TAG_VERSION ) -$(BUILD_DATE ) NAMESPACE=$(NAMESPACE ) BINDING_VERSION=$(BINDING_VERSION ) \
835
+ VERSION=$(TAG_VERSION ) VIDEO_TAG=$(FFMPEG_TAG_VERSION ) -$(BUILD_DATE ) NAMESPACE=$(NAMESPACE ) BINDING_VERSION=$(BINDING_VERSION ) EXTERNAL_UPLOADER_CONFIG=true \
856
836
TEMPLATE_OUTPUT_FILENAME=" k8s_prefixSelenium_basicAuth_secureServer_autoScaling_scaledJob_existingKEDA.yaml" \
857
837
./tests/charts/make/chart_test.sh JobAutoscaling
858
838
0 commit comments