Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 65 additions & 33 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Java CI with Maven
name: Java CI with Maven and Docker

on:
pull_request:
Expand All @@ -9,62 +9,97 @@ on:
- main

jobs:
build:
name: 'Run tests'
test:
name: Run Selenium Tests
runs-on: ubuntu-latest

services:
selenium-hub:
image: selenium/hub:4.5.0-20221004
ports:
- "4444:4444"

chrome:
image: selenium/node-chrome:4.5.0-20221004
shm_size: 2gb
environment:
SE_EVENT_BUS_HOST: selenium-hub
SE_EVENT_BUS_PUBLISH_PORT: 4442
SE_EVENT_BUS_SUBSCRIBE_PORT: 4443

steps:
- name: Git clone
- name: Checkout code
uses: actions/checkout@v4

- name: Setup JDK 17
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'adopt'
distribution: 'temurin'
cache: 'maven'


- name: Set up Docker Compose
- name: Install Chrome
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo apt-get update
sudo apt-get install -y google-chrome-stable
google-chrome --version

- name: Create config.properties
run: |
echo "login=${{ secrets.login }}" > src/test/resources/test.conf
echo "password=${{ secrets.password }}" >> src/test/resources/test.conf
- name: Set up ChromeDriver
uses: nanasess/setup-chromedriver@v1
with:
chromedriver-version: 'latest'

- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-


- name: Build with Docker Compose
run: docker-compose build

- name: Start Docker Compose services
run: docker-compose up
- name: Create test.conf
run: |
echo "key=${{ secrets.login }}" > src/test/resources/test.conf
echo "token=${{ secrets.password }}" >> src/test/resources/test.conf
echo "remote.url=http://selenium-hub:4444/wd/hub" >> src/test/resources/test.conf
echo "headless=true" >> src/test/resources/test.conf
echo "browser=chrome" >> src/test/resources/test.conf
echo "headless=true" >> src/test/resources/test.conf
echo "timeout=30" >> src/test/resources/test.conf

- name: Run Selenium Tests
run: |
export DISPLAY=:99
Xvfb :99 -screen 0 1920x1080x16 &
mvn test -B
killall Xvfb

- name: Attach screenshots
if: failure()
uses: actions/upload-artifact@v4
with:
name: screenshots
path: ${{ github.workspace }}/screenshots
name: screenshots
path: ${{ github.workspace }}/screenshots

- name: Get Allure history
uses: actions/checkout@v4
if: always()
continue-on-error: true
with:
ref: gh-pages
path: gh-pages
ref: gh-pages
path: gh-pages

- name: Build Allure report
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: target/allure-results
gh_pages: gh-pages
allure_report: allure-report
allure_history: allure-history
allure_results: target/allure-results
gh_pages: gh-pages
allure_report: allure-report
allure_history: allure-history

- name: Check Allure results
run: ls -la target/allure-results
Expand All @@ -73,13 +108,10 @@ jobs:
if: ${{ success() || failure() }}
uses: peaceiris/actions-gh-pages@v2
env:
PERSONAL_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: allure-history
PERSONAL_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: allure-history

- name: Stop Docker Compose services
if: always()
run: docker-compose down



run: docker-compose down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,6 @@ build/

###Properties & Conf ###
.conf
.properties
.properties

Dockerfile
10 changes: 6 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
FROM maven:3.9.6-eclipse-temurin-17-alpine

# Устанавливаем рабочую директорию
# Set working directory
WORKDIR /app

# Копируем файлы проекта
# Copy
COPY . .

# Выполняем тесты
CMD ["mvn", "test"]


# Run tests
CMD ["mvn", "test", "-DsuiteXmlFile=src/test/resources/testng.xml"]
7 changes: 4 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ services:
build: .
image: trello-api-tests
container_name: test-container
environment:
key: $key
token: $token
volumes:
- ./target/allure-results:/app/target/allure-results
- ./src/test/resources/test.conf:/app/src/test/resources/test.conf


- ./src/test/resources/config.properties:/app/src/test/resources/test.conf
1 change: 0 additions & 1 deletion src/test/java/automation/tests/LoginTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

import static io.qameta.allure.SeverityLevel.CRITICAL;


@Epic("Create account")
@Feature("Login")
public class LoginTest extends BaseTest {
Expand Down
1 change: 0 additions & 1 deletion src/test/resources/test.conf
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@

login = "standard_user"
password = "secret_sauce"
29 changes: 29 additions & 0 deletions src/test/resources/testng.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="SwagLabs Test Suite" verbose="1">



<test name="Chrome Tests" parallel="methods" thread-count="3">
<parameter name="browser" value="chrome"/>
<classes>
<class name="automation.tests.LoginTest"/>
<!-- Добавьте другие тестовые классы -->
</classes>
</test>

<!-- Дополнительные тесты для других браузеров (при необходимости) -->
<!--
<test name="Firefox Tests" parallel="methods" thread-count="3">
<parameter name="browser" value="firefox"/>
<classes>
<class name="com.swaglabs.tests.LoginTest"/>
</classes>
</test>
-->

<test name="API Tests">
<classes>
<!-- <class name="com.swaglabs.tests.ApiTests"/> -->
</classes>
</test>
</suite>