Skip to content

Commit 0dc00b3

Browse files
authored
Merge pull request #1 from onemoreqa/hw-7
Hw 7
2 parents 67e3f88 + 2e36ab4 commit 0dc00b3

37 files changed

+1647
-24
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: GitHub Actions Demo
2+
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
3+
on: [push]
4+
jobs:
5+
Explore-GitHub-Actions:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
9+
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
10+
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
11+
- name: Check out repository code
12+
uses: actions/checkout@v4
13+
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
14+
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
15+
- name: List files in the repository
16+
run: |
17+
ls ${{ github.workspace }}
18+
- run: echo "🍏 This job's status is ${{ job.status }}."

.gitignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.idea
2+
*.iml
3+
target
4+
infra/video
5+
infra/logs
6+
infra/allure
7+
infra/allure-results
8+
.allure
9+
.attach_*
10+
build
11+
/build/
12+
lib
13+
/jenkins/registry/
14+
results/
15+
surefire-reports/
16+
/infra/allure-results/
17+
/jenkins/jenkinsdata/

README.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
#### ДЗ #1: Автотест со своими ожиданиями:
1+
#### ДЗ #6: Разворачивание Jenkins'a и подключение джоб:
22

3-
###### Цель:
4-
- Реализовать на практике полученные знания, с использованием Actions и своих ожиданий.
3+
#### Цель: Необходимо настроить Jenkins, который будет запускать тесты по тригеру и выдавать читаемый отчет в Allure.
54

6-
###### Описание/Пошаговая инструкция выполнения домашнего задания:
7-
- Необходимо создать проект в Maven'e
8-
- Фабрику (WebDriverFactory), которая будет получать значение из окружения и запускать соответствующий браузер (Chrome, Firefox, Opera)
9-
- Реализовать подсветку элементов перед нажатием, после нажатия вернуть данные в исходное состояние
10-
- На главно странице Otus'a снизу найти список курсов(популярные курсы, специализации, рекомендации) и реализовать:
11-
- Метод фильтр по названию курса
12-
- Метод выбора курса, стартующего раньше всех/позже всех (при совпадении дат - выбрать любой) при помощи reduce
13-
- Реализовать движение мыши при помощи и выбор курса при помощи библиотеки Actions
5+
#### Описание/Пошаговая инструкция выполнения домашнего задания:
6+
- Сдача проекта будет происходить путем выдачи xml с настроенными job'ами
7+
- Джоба с запуском Selenium/Selenide тестов по тестированию Otus'a (можно из ранее сделанных) с возможностью выбора браузера
8+
- Джоба с запуском Apppium тестов по тестированию мобильного приложения (можно из ранее сделанных)
9+
- Обратите внимание, в п.2 должна быть реализована автоматическое скачивание приложения.
1410

11+
###### Критерии оценки (из 10 баллов):
12+
- 4 балла за джобу с запуском Selenium
13+
- 4 балла за джобу с appium
14+
- 2 балла за читаемые отчеты
15+
16+
```shell
17+
pip install --user jenkins-job-builder
18+
jenkins-jobs --conf ./jobs/jobs.ini update ./jobs
19+
20+
#build slave:
21+
docker build -f ./Dockerfile.maven -t localhost:5005/maven_slave:1.0.0 .
22+
#push to registry
23+
docker push localhost:5005/maven_slave:1.0.0
24+
# check slave state: {"repositories":['maven_slave']}
25+
curl -v -X GET http://127.0.0.1:5005/v2/_catalog
1526

16-
###### Варианты запуска тестов:
17-
```bash
18-
mvn clean test
1927
```
2028

21-
---
22-
###### Критерии оценки (из 10 баллов):
23-
- 2 Балла за реализацию фабрики
24-
- 2 балла за подсветку элементов, +2 балла за возврат страницы в исходное состояние
25-
- 1 бал за реализацию фильтра, +1 бал за реализацию reduce'ра
26-
- 2 балла за реализацию Actions и выбора цвета
27-
- 1 бал за каждое вмешательство преподавателя для запуска/работы тестов
28-
- 2 балла за не реализованное задание
29-
- Сдача происходит через git.
30-
- Необходимо приложить инструкцию (вариант, написать в readme.md) по запуску.
29+
- Плагины: docker, git, allure, Build user vars, http requests, pipeline utility steps
30+
- [infraSchema](infra/docs/infra-schema.md)

infra/docker-compose.yaml

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
version: '3'
2+
networks:
3+
selenoid:
4+
external:
5+
name: selenoid # This assumes network is already created
6+
selenoid2:
7+
external:
8+
name: selenoid2 # This assumes network is already created
9+
10+
services:
11+
selenoid:
12+
image: "aerokube/selenoid:1.11.2"
13+
container_name: selenoid
14+
networks:
15+
selenoid: null
16+
ports:
17+
- "4445:4444"
18+
volumes:
19+
- ./etc/browsers.json:/etc/selenoid/browsers.json
20+
- /var/run/docker.sock:/var/run/docker.sock
21+
- ./video:/opt/selenoid/video
22+
- ./logs:/opt/selenoid/logs
23+
environment:
24+
- OVERRIDE_VIDEO_OUTPUT_DIR=./video
25+
- TZ=Asia/Yekaterinburg
26+
command: [
27+
"-conf", "/etc/selenoid/browsers.json",
28+
"-limit", "4", "-cpu", "0.7", "-mem", "2048m",
29+
"-timeout", "5m0s", "-service-startup-timeout", "5m0s",
30+
"-session-attempt-timeout", "5m0s", "-session-delete-timeout", "5m0s",
31+
"-log-output-dir", "/opt/selenoid/logs",
32+
"-video-output-dir", "/opt/selenoid/video",
33+
"-container-network", "selenoid"
34+
]
35+
36+
selenoid2:
37+
image: "aerokube/selenoid:1.11.2"
38+
container_name: selenoid2
39+
networks:
40+
selenoid2: null
41+
ports:
42+
- "4446:4444"
43+
volumes:
44+
- ./etc/browsers.json:/etc/selenoid/browsers.json
45+
- /var/run/docker.sock:/var/run/docker.sock
46+
- ./video:/opt/selenoid/video
47+
- ./logs:/opt/selenoid/logs
48+
environment:
49+
- OVERRIDE_VIDEO_OUTPUT_DIR=./video
50+
- TZ=Asia/Yekaterinburg
51+
command: [
52+
"-conf", "/etc/selenoid/browsers.json",
53+
"-limit", "4", "-cpu", "0.7", "-mem", "1024m",
54+
"-log-output-dir", "/opt/selenoid/logs",
55+
"-video-output-dir", "/opt/selenoid/video",
56+
"-container-network", "selenoid2"
57+
]
58+
59+
selenoid-ui:
60+
image: "aerokube/selenoid-ui:1.10.11"
61+
container_name: selenoid-ui
62+
links:
63+
- ggr
64+
- ggr-ui
65+
command: ["--selenoid-uri", "http://ggr-ui:8888"]
66+
67+
nginx:
68+
image: "nginx:stable-alpine"
69+
container_name: nginx
70+
network_mode: host
71+
restart: unless-stopped
72+
volumes:
73+
- ./etc/nginx/:/etc/nginx/conf.d/:rw
74+
- /etc/ssl/:/etc/ssl
75+
76+
ggr:
77+
image: "aerokube/ggr:1.7.2"
78+
container_name: ggr
79+
ports:
80+
- 4444:4444
81+
restart: unless-stopped
82+
volumes:
83+
- ./etc/grid-router:/etc/grid-router:ro
84+
command: [
85+
"-listen", ":4444", "-guests-allowed",
86+
"-timeout", "300s",
87+
"-guests-quota", "test", "-verbose",
88+
"-quotaDir", "./etc/grid-router/quota"
89+
]
90+
91+
ggr-ui:
92+
image: "aerokube/ggr-ui:1.2.0"
93+
container_name: ggr-ui
94+
ports:
95+
- 8888:8888
96+
volumes:
97+
- ./etc/grid-router/quota:/etc/grid-router/quota:ro
98+
command: [
99+
"-timeout", "300s", "-response-time", "300s"
100+
]
101+
102+
registry:
103+
restart: always
104+
image: registry
105+
container_name: registry
106+
hostname: registry
107+
volumes:
108+
- ../jenkins/registry:/var/lib/registry
109+
ports:
110+
- "5005:5005"
111+
environment:
112+
- REGISTRY_HTTP_ADDR=0.0.0.0:5005
113+
114+
jenkins:
115+
restart: always
116+
image: jenkins/jenkins:2.452
117+
container_name: jenkins
118+
hostname: jenkins
119+
user: root
120+
ports:
121+
- 8080:8080
122+
environment:
123+
- JENKINS_OPTS="--prefix=/jenkins"
124+
- JAVA_OPTS="-Dhudson.model.DownloadService.noSignatureCheck=true"
125+
- DOCKER_HOST=unix:///var/run/docker.sock
126+
volumes:
127+
# - /var/jenkins_home:/var/jenkins_home
128+
- /var/run/docker.sock:/var/run/docker.sock
129+
volumes_from:
130+
- jenkins-data
131+
jenkins-data:
132+
#image: onemoreqa/jenkinsdata:2.452
133+
image: onemoreqa/jenkinsdata:0.0.2
134+
container_name: jenkins-data
135+
136+
#
137+
# wiremock:
138+
# image: "wiremock/wiremock:3.4.2"
139+
# container_name: wiremock
140+
# ports:
141+
# - "8880:8080"
142+
# volumes:
143+
# - ./extensions:/var/wiremock/extensions
144+
# - ../src/test/resources/wmstub:/home/wiremock
145+
# entrypoint: [ "/docker-entrypoint.sh", "--global-response-templating", "--disable-gzip", "--verbose" ]
146+
#
147+
# postgres:
148+
# image: postgres:13.3
149+
# environment:
150+
# POSTGRES_DB: "otustestdb"
151+
# POSTGRES_USER: "randomuser"
152+
# POSTGRES_PASSWORD: "randompassword12345!"
153+
# volumes:
154+
# - ./etc:/docker-entrypoint-initdb.d
155+
# ports:
156+
# - "54132:5432"

0 commit comments

Comments
 (0)