generic_test 0.1.12 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +28 -5
- data/.rspec +1 -1
- data/ChangeLog +5 -0
- data/Dockerfile +5 -3
- data/README.md +36 -3
- data/generic_test.gemspec +2 -1
- data/lib/generic_test/setup.rb +2 -0
- data/lib/generic_test/version.rb +1 -1
- data/lib/generic_test.rb +2 -0
- data/spec/generic_test_spec.rb +4 -0
- metadata +6 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5dc87e6158431181b42b3d8775d112382c54617cb5f519657064bb21650a5ac
|
4
|
+
data.tar.gz: 9662978df60eb50b37033056dca365c192e7891a5546159a3d4e34e6a62b6911
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b079ecf7d4f14cd88d64766ed3e49f34052ee349951fdce2c9ec5785e601e8d43c826daaa87f7f693e94c7480b8bfa3d04f5649ce9fbad44793b88a13ce39f52
|
7
|
+
data.tar.gz: 22192bdb59c6563dc8228292328f6a3838476143fbc8753569f3cab00c647d2bc7d326133a82330ce8a31084009f78d4ba0033d4dca921c7d73f51f408f79364
|
data/.gitlab-ci.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
image: ruby:
|
1
|
+
image: ruby:3.3
|
2
2
|
|
3
3
|
include:
|
4
4
|
- template: Code-Quality.gitlab-ci.yml
|
@@ -8,16 +8,22 @@ docker_build:
|
|
8
8
|
# Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
|
9
9
|
DOCKER_HOST: tcp://docker:2376
|
10
10
|
DOCKER_TLS_CERTDIR: "/certs"
|
11
|
-
stage:
|
11
|
+
stage: test # Part of a later stage
|
12
12
|
services:
|
13
|
-
- docker:
|
14
|
-
image: docker:
|
13
|
+
- docker:20.10.11-dind
|
14
|
+
image: docker:20.10.11
|
15
15
|
script:
|
16
16
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
17
17
|
- docker pull --quiet $CI_REGISTRY_IMAGE:latest || true
|
18
18
|
- docker build -t $CI_REGISTRY_IMAGE:latest .
|
19
19
|
- docker run -t $CI_REGISTRY_IMAGE:latest generic_test page samuel-garratt.gitlab.io/generic_test/about.html
|
20
20
|
- docker push $CI_REGISTRY_IMAGE:latest
|
21
|
+
# only:
|
22
|
+
# - master
|
23
|
+
# needs: ["test"]
|
24
|
+
except:
|
25
|
+
changes:
|
26
|
+
- "*.md"
|
21
27
|
|
22
28
|
test:
|
23
29
|
image: registry.gitlab.com/samuel-garratt/generic_test
|
@@ -34,6 +40,23 @@ test:
|
|
34
40
|
expire_in: 1 week
|
35
41
|
when: always
|
36
42
|
|
43
|
+
# Example of using generic test
|
44
|
+
example_test:
|
45
|
+
stage: test
|
46
|
+
image: registry.gitlab.com/samuel-garratt/generic_test
|
47
|
+
script:
|
48
|
+
- generic_test page samuel-garratt.gitlab.io/generic_test/about.html
|
49
|
+
variables:
|
50
|
+
GIT_STRATEGY: none
|
51
|
+
artifacts:
|
52
|
+
paths:
|
53
|
+
- logs/*.xml
|
54
|
+
- reports
|
55
|
+
reports:
|
56
|
+
junit: logs/*.xml
|
57
|
+
expire_in: 1 week
|
58
|
+
when: always
|
59
|
+
|
37
60
|
pages:
|
38
61
|
stage: deploy
|
39
62
|
script:
|
@@ -51,4 +74,4 @@ pages:
|
|
51
74
|
image: docker:19.03.5
|
52
75
|
stage: test
|
53
76
|
script:
|
54
|
-
- docker run myrepo/generic_test BASE_URL
|
77
|
+
- docker run myrepo/generic_test BASE_URL
|
data/.rspec
CHANGED
data/ChangeLog
CHANGED
data/Dockerfile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
FROM ruby:
|
2
|
-
|
1
|
+
FROM ruby:3.3
|
2
|
+
LABEL AUTHOR=SamuelGarratt
|
3
3
|
|
4
4
|
# Required ruby gems
|
5
5
|
RUN mkdir /test
|
@@ -21,4 +21,6 @@ RUN export LANG=C.UTF-8
|
|
21
21
|
RUN export LANGUAGE=C.UTF-8
|
22
22
|
RUN export LC_ALL=C.UTF-8
|
23
23
|
# By running test image is checked and webdriver will be cached
|
24
|
-
RUN generic_test page samuel-garratt.gitlab.io/generic_test/about.html
|
24
|
+
RUN generic_test page samuel-garratt.gitlab.io/generic_test/about.html
|
25
|
+
|
26
|
+
ENTRYPOINT ["generic_test", "page"]
|
data/README.md
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
This gem provides an easy way to run generic tests for a website/api
|
4
4
|
|
5
|
-
Test site is at https://samuel-garratt.gitlab.io/generic_test
|
5
|
+
Test site is at [https://samuel-garratt.gitlab.io/generic_test](https://samuel-garratt.gitlab.io/generic_test)
|
6
|
+
|
7
|
+
## Quick start
|
6
8
|
|
7
9
|
Run test gem through docker against this website with (Note it is an example that has some failures)
|
8
10
|
|
@@ -14,6 +16,27 @@ To get a log of your tests share a volume with the container.
|
|
14
16
|
|
15
17
|
> Please share this volume from an empty folder. Running from within another gem might cause an issue
|
16
18
|
|
19
|
+
## Add to gitlab CI for your website
|
20
|
+
|
21
|
+
Add the following `YAML` to test against a website
|
22
|
+
```yaml
|
23
|
+
example_test:
|
24
|
+
stage: test
|
25
|
+
image: registry.gitlab.com/samuel-garratt/generic_test
|
26
|
+
script:
|
27
|
+
- generic_test page YOUR_WEBSITE_URL
|
28
|
+
variables:
|
29
|
+
GIT_STRATEGY: none # Make more efficient and remove any dependency conflicts
|
30
|
+
artifacts:
|
31
|
+
paths:
|
32
|
+
- logs/*.xml
|
33
|
+
- reports # HTML reports
|
34
|
+
reports:
|
35
|
+
junit: logs/*.xml
|
36
|
+
expire_in: 1 week
|
37
|
+
when: always
|
38
|
+
```
|
39
|
+
|
17
40
|
## Installation
|
18
41
|
|
19
42
|
Add this line to your application's Gemfile:
|
@@ -48,6 +71,10 @@ E.g.,
|
|
48
71
|
|
49
72
|
`docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test page samuel-garratt.gitlab.io/generic_test`
|
50
73
|
|
74
|
+
Check version
|
75
|
+
|
76
|
+
`docker run -t registry.gitlab.com/samuel-garratt/generic_test generic_test version`
|
77
|
+
|
51
78
|
### Through login page
|
52
79
|
|
53
80
|
Environment variables store Login URL, username and password
|
@@ -78,11 +105,17 @@ login:
|
|
78
105
|
|
79
106
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
80
107
|
|
81
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
108
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
109
|
+
the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for
|
110
|
+
the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
111
|
+
|
112
|
+
The pipeline running on master will deploy a new version of the docker container with the latest version released
|
113
|
+
to rubygems.org. Therefore a `rake release` is required before any changes will be reflected in the newly built
|
114
|
+
docker container.
|
82
115
|
|
83
116
|
## Contributing
|
84
117
|
|
85
|
-
Bug reports and pull requests are welcome on
|
118
|
+
Bug reports and pull requests are welcome on GitLab at https://gitlab.com/samuel-garratt/generic_test. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://gitlab.com/samuel-garratt/generic_test/-/blob/master/CODE_OF_CONDUCT.md).
|
86
119
|
|
87
120
|
## License
|
88
121
|
|
data/generic_test.gemspec
CHANGED
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency 'jekyll' # For hosting test website
|
30
30
|
spec.add_development_dependency 'rake'
|
31
31
|
spec.add_dependency 'rspec-legacy_formatters' # Needed for rspec_html_reporter after RSpec 3
|
32
|
-
|
32
|
+
# This doesn't work with latest Ruby version
|
33
|
+
#spec.add_dependency 'rspec_html_reporter' # Pretty HTML reports
|
33
34
|
spec.add_dependency 'rspec_junit_formatter' # Needed for nicer reporting of rspec for use in CI
|
34
35
|
spec.add_dependency 'simplecov' # Code coverage
|
35
36
|
|
data/lib/generic_test/setup.rb
CHANGED
@@ -34,6 +34,8 @@ if ENV[GT_LOGIN_URL] && ENV[GT_USERNAME] && ENV[GT_PASSWORD]
|
|
34
34
|
puts "Login through #{ENV[GT_LOGIN_URL]} successful!"
|
35
35
|
end
|
36
36
|
|
37
|
+
ENV['PAGE_URL'] = RestClient.get(ENV['PAGE_URL']).request.url # Check page exists
|
38
|
+
puts "Checking #{ENV['PAGE_URL']}"
|
37
39
|
browser.goto ENV['PAGE_URL']
|
38
40
|
sleep 2.5 # Give a bit of time for page to load
|
39
41
|
GenericTest.pages << GenericTest::Page.new(browser)
|
data/lib/generic_test/version.rb
CHANGED
data/lib/generic_test.rb
CHANGED
@@ -15,9 +15,11 @@ module GenericTest
|
|
15
15
|
# browser so less likely to be accurate for logged in pages
|
16
16
|
@only_javascript = false
|
17
17
|
|
18
|
+
@tested_links = []
|
18
19
|
class << self
|
19
20
|
attr_accessor :browser
|
20
21
|
attr_accessor :pages
|
22
|
+
attr_accessor :tested_links
|
21
23
|
attr_accessor :only_javascript
|
22
24
|
end
|
23
25
|
end
|
data/spec/generic_test_spec.rb
CHANGED
@@ -7,10 +7,14 @@ links = page.links
|
|
7
7
|
RSpec.describe "#{page.title} Links respond" do
|
8
8
|
links.each_with_index do |link, index|
|
9
9
|
link_text = link.text.to_s.empty? ? '' : " \"#{link.text}\""
|
10
|
+
next if GenericTest.tested_links.include? link.href
|
11
|
+
|
12
|
+
GenericTest.tested_links << link.href
|
10
13
|
it "Link (#{index + 1})#{link_text} to '#{link.href}' succeeds" do
|
11
14
|
expect(Checker.link_status(link.href)).to be_between 200, 399
|
12
15
|
end
|
13
16
|
end
|
17
|
+
puts "Checking #{GenericTest.tested_links.count} non duplicate links"
|
14
18
|
end
|
15
19
|
|
16
20
|
emails = page.emails
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generic_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Garratt
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec_html_reporter
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec_junit_formatter
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -250,7 +236,7 @@ metadata:
|
|
250
236
|
homepage_uri: https://gitlab.com/samuel-garratt/generic_test
|
251
237
|
source_code_uri: https://gitlab.com/samuel-garratt/generic_test
|
252
238
|
changelog_uri: https://gitlab.com/samuel-garratt/generic_test/blob/master/ChangeLog
|
253
|
-
post_install_message:
|
239
|
+
post_install_message:
|
254
240
|
rdoc_options: []
|
255
241
|
require_paths:
|
256
242
|
- lib
|
@@ -265,8 +251,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
265
251
|
- !ruby/object:Gem::Version
|
266
252
|
version: '0'
|
267
253
|
requirements: []
|
268
|
-
rubygems_version: 3.
|
269
|
-
signing_key:
|
254
|
+
rubygems_version: 3.2.3
|
255
|
+
signing_key:
|
270
256
|
specification_version: 4
|
271
257
|
summary: Generic tests for a website/api.
|
272
258
|
test_files: []
|