hw4: finalize selenoid and ansible workflow with citrus tests

This commit is contained in:
2026-02-27 01:38:06 +03:00
parent c06e9a89f1
commit 7ddea2e997
36 changed files with 1171 additions and 122 deletions

View File

@@ -0,0 +1,68 @@
---
- name: Create Selenoid directory
ansible.builtin.file:
path: "{{ selenoid_dir }}"
state: directory
mode: "0755"
- name: Create logs directory
ansible.builtin.file:
path: "{{ selenoid_dir }}/{{ item }}"
state: directory
mode: "0777"
loop:
- logs
- name: Render browsers.json
ansible.builtin.template:
src: browsers.json.j2
dest: "{{ selenoid_dir }}/browsers.json"
mode: "0644"
- name: Render docker compose for Selenoid
ansible.builtin.template:
src: docker-compose.selenoid.yml.j2
dest: "{{ selenoid_dir }}/{{ selenoid_compose_file }}"
mode: "0644"
- name: Ensure default chrome version is in the configured versions list
ansible.builtin.assert:
that:
- (selenoid_chrome_versions | length) >= 2
- (selenoid_firefox_versions | length) >= 2
fail_msg: "Invalid Selenoid config: provide at least 2 chrome and 2 firefox versions"
- name: Check shared Docker network for grid stack
ansible.builtin.command:
cmd: docker network inspect {{ selenoid_container_network }}
register: shared_grid_network
changed_when: false
failed_when: false
- name: Create shared Docker network for grid stack
ansible.builtin.command:
cmd: docker network create {{ selenoid_container_network }}
when: shared_grid_network.rc != 0
- name: Stop previous Selenoid stack and remove orphans
ansible.builtin.command:
cmd: docker compose -f {{ selenoid_compose_file }} down --remove-orphans
chdir: "{{ selenoid_dir }}"
changed_when: false
- name: Pull required Chrome images for Selenoid
ansible.builtin.command:
cmd: "docker pull selenoid/vnc:chrome_{{ item }}"
loop: "{{ selenoid_chrome_versions }}"
changed_when: false
- name: Pull required Firefox images for Selenoid
ansible.builtin.command:
cmd: "docker pull selenoid/vnc:firefox_{{ item }}"
loop: "{{ selenoid_firefox_versions }}"
changed_when: false
- name: Start Selenoid stack
ansible.builtin.command:
cmd: docker compose -f {{ selenoid_compose_file }} up -d
chdir: "{{ selenoid_dir }}"

View File

@@ -0,0 +1,26 @@
{
"chrome": {
"default": "{{ selenoid_chrome_versions | first }}",
"versions": {
{% for version in selenoid_chrome_versions %}
"{{ version }}": {
"image": "selenoid/vnc:chrome_{{ version }}",
"port": "4444",
"path": "/"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
},
"firefox": {
"default": "{{ selenoid_firefox_versions | first }}",
"versions": {
{% for version in selenoid_firefox_versions %}
"{{ version }}": {
"image": "selenoid/vnc:firefox_{{ version }}",
"port": "4444",
"path": "/wd/hub"
}{% if not loop.last %},{% endif %}
{% endfor %}
}
}
}

View File

@@ -0,0 +1,46 @@
services:
selenoid:
image: "{{ selenoid_image }}"
container_name: selenoid
restart: unless-stopped
environment:
- DOCKER_API_VERSION=1.45
ports:
- "{{ selenoid_host_port }}:4444"
volumes:
- "./browsers.json:/etc/selenoid/browsers.json:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
- "./logs:/opt/selenoid/logs"
command:
- "-limit"
- "{{ selenoid_limit }}"
- "-conf"
- "/etc/selenoid/browsers.json"
- "-log-output-dir"
- "/opt/selenoid/logs"
- "-container-network"
- "{{ selenoid_container_network }}"
- "-timeout"
- "3m"
- "-session-attempt-timeout"
- "2m"
- "-service-startup-timeout"
- "2m"
selenoid-ui:
image: "{{ selenoid_ui_image }}"
container_name: selenoid-ui
restart: unless-stopped
depends_on:
- selenoid
ports:
- "{{ selenoid_ui_port }}:8080"
command:
- "--selenoid-uri"
- "http://selenoid:4444"
networks:
default:
name: "{{ selenoid_container_network }}"
external: true