Skip to content

Commit 0701e9f

Browse files
author
Nikita Filonov
committed
tests
1 parent 6b04104 commit 0701e9f

36 files changed

+1371
-59
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Lint
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
python-version:
7+
type: string
8+
default: "3.12"
9+
required: false
10+
11+
jobs:
12+
action:
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-python@v5
16+
with:
17+
python-version: ${{ inputs.python-version }}
18+
- run: pip install ruff
19+
- run: ruff check ui_coverage_tool
20+
runs-on: ubuntu-latest
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
name: Publish Python 🐍 distribution to PyPI
1+
name: PyPI
22

33
on:
4-
push:
5-
tags:
6-
- 'v*'
4+
workflow_call:
5+
inputs:
6+
python-version:
7+
type: string
8+
default: "3.12"
9+
required: false
710

811
jobs:
9-
build:
10-
runs-on: ubuntu-latest
11-
12+
action:
1213
steps:
1314
- uses: actions/checkout@v4
1415

1516
- name: Set up Python
1617
uses: actions/setup-python@v5
1718
with:
18-
python-version: 3.12
19+
python-version: ${{ inputs.python-version }}
1920

2021
- name: Install dependencies
2122
run: |
2223
python -m pip install --upgrade pip
23-
pip install setuptools wheel twine
24+
pip install build twine
2425
2526
- name: Build distribution
26-
run: |
27-
python setup.py sdist bdist_wheel
27+
run: python -m build
2828

2929
- name: Publish to PyPI
30-
run: |
31-
python -m twine upload dist/* --repository-url https://upload.pypi.org/legacy/
30+
run: twine upload dist/*
3231
env:
3332
TWINE_USERNAME: __token__
3433
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
34+
runs-on: ubuntu-latest
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Test
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
python-version:
7+
type: string
8+
default: "3.12"
9+
required: false
10+
11+
jobs:
12+
action:
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-python@v5
16+
with:
17+
python-version: ${{ inputs.python-version }}
18+
19+
- name: Install dependencies
20+
run: pip install .[test] pytest pytest-cov
21+
22+
- name: Run tests
23+
run: pytest --cov=ui_coverage_tool --cov-report=xml --cov-report=term-missing
24+
25+
- name: Upload coverage
26+
uses: codecov/codecov-action@v4
27+
with:
28+
token: ${{ secrets.CODECOV_TOKEN }}
29+
files: ./coverage.xml
30+
verbose: true
31+
fail_ci_if_error: true
32+
33+
runs-on: ubuntu-latest
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: 🚀 Publish
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
lint:
10+
name: 🧹 lint
11+
uses: ./.github/workflows/reusable-lint.yml
12+
13+
test:
14+
name: 🧪 test
15+
uses: ./.github/workflows/reusable-test.yml
16+
needs: lint
17+
18+
pypi:
19+
name: 📦 pypi
20+
uses: ./.github/workflows/reusable-pypi.yml
21+
needs: test
22+
secrets: inherit
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: 🧪 Test
2+
3+
on:
4+
push:
5+
branches: [ "**" ]
6+
7+
jobs:
8+
lint:
9+
name: 🧹 lint
10+
uses: ./.github/workflows/reusable-lint.yml
11+
12+
test:
13+
name: 🧪 test
14+
uses: ./.github/workflows/reusable-test.yml
15+
needs: lint

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@
186186
same "printed page" as the copyright notice for easier
187187
identification within third-party archives.
188188

189-
Copyright [yyyy] [name of copyright owner]
189+
Copyright 2025 Nikita Filonov
190190

191191
Licensed under the Apache License, Version 2.0 (the "License");
192192
you may not use this file except in compliance with the License.

MANIFEST.in

Lines changed: 0 additions & 3 deletions
This file was deleted.

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# UI Coverage Tool
22

3+
[![CI](https://github.com/Nikita-Filonov/ui-coverage-tool/actions/workflows/workflow-test.yml/badge.svg)](https://github.com/Nikita-Filonov/ui-coverage-tool/actions/workflows/workflow-test.yml)
4+
[![codecov](https://codecov.io/gh/Nikita-Filonov/ui-coverage-tool/branch/main/graph/badge.svg)](https://codecov.io/gh/Nikita-Filonov/ui-coverage-tool)
5+
[![PyPI version](https://img.shields.io/pypi/v/ui-coverage-tool.svg)](https://pypi.org/project/ui-coverage-tool/)
6+
[![License](https://img.shields.io/github/license/Nikita-Filonov/ui-coverage-tool)](./LICENSE)
7+
[![GitHub stars](https://img.shields.io/github/stars/Nikita-Filonov/ui-coverage-tool?style=social)](https://github.com/Nikita-Filonov/ui-coverage-tool/stargazers)
8+
39
**UI Coverage Tool** is an innovative, no-overhead solution for tracking and visualizing UI test coverage — directly on
410
your actual application, not static snapshots. The tool collects coverage during UI test execution and generates an
511
interactive HTML report. This report embeds a live iframe of your application and overlays coverage data on top, letting

conftest.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pytest_plugins = (
2+
"ui_coverage_tool.tests.fixtures.config",
3+
"ui_coverage_tool.tests.fixtures.tracker",
4+
"ui_coverage_tool.tests.fixtures.reports",
5+
)

pyproject.toml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
[build-system]
2+
requires = ["setuptools", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "ui-coverage-tool"
7+
version = "0.32.0"
8+
description = "UI Coverage Tool is an innovative, no-overhead solution for tracking and visualizing UI test coverage — directly on your actual application, not static snapshots."
9+
readme = { file = "README.md", content-type = "text/markdown" }
10+
license = { file = "LICENSE" }
11+
authors = [
12+
{ name = "Nikita Filonov", email = "filonov.nikitkaa@gmail.com" }
13+
]
14+
maintainers = [
15+
{ name = "Nikita Filonov", email = "filonov.nikitkaa@gmail.com" }
16+
]
17+
keywords = [
18+
"python",
19+
"coverage",
20+
"ui-coverage",
21+
"ui-testing",
22+
"test-coverage",
23+
"frontend-testing",
24+
"visual-testing",
25+
"automation",
26+
"qa",
27+
"quality-assurance",
28+
"reporting",
29+
"html-report",
30+
"pytest",
31+
"selenium",
32+
"playwright",
33+
"web-testing",
34+
"test-analytics"
35+
]
36+
classifiers = [
37+
"Programming Language :: Python :: 3",
38+
"Programming Language :: Python :: 3.11",
39+
"Programming Language :: Python :: 3.12",
40+
"License :: OSI Approved :: MIT License",
41+
"Operating System :: OS Independent",
42+
"Intended Audience :: Developers",
43+
"Topic :: Software Development :: Testing",
44+
"Topic :: Software Development :: Quality Assurance"
45+
]
46+
requires-python = ">=3.11"
47+
48+
dependencies = [
49+
"click==8.1.8",
50+
"pyyaml==6.0.2",
51+
"pydantic==2.11.3",
52+
"pydantic-settings==2.8.1"
53+
]
54+
55+
[project.urls]
56+
Homepage = "https://github.com/Nikita-Filonov/ui-coverage-tool"
57+
Repository = "https://github.com/Nikita-Filonov/ui-coverage-tool"
58+
Issues = "https://github.com/Nikita-Filonov/ui-coverage-tool/issues"
59+
60+
[project.scripts]
61+
ui-coverage-tool = "ui_coverage_tool.cli.main:cli"
62+
63+
[project.optional-dependencies]
64+
test = ["pytest", "pytest-cov"]
65+
66+
[tool.setuptools]
67+
include-package-data = true
68+
69+
[tool.setuptools.packages.find]
70+
where = ["."]
71+
include = ["ui_coverage_tool*"]
72+
73+
[tool.setuptools.package-data]
74+
"ui_coverage_tool" = ["config.py"]
75+
"ui_coverage_tool.cli" = ["**/*"]
76+
"ui_coverage_tool.src" = ["**/*"]

0 commit comments

Comments
 (0)