magic_test 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -3
- data/lib/magic_test/engine.rb +4 -0
- data/lib/magic_test/support.rb +10 -2
- data/lib/magic_test/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e4c59a0e6c290ee746ade6639fc584381ba394c5a94b80e3ff77d7e4b82f8cf
|
4
|
+
data.tar.gz: 9b414506b6286e4f8d0a3edbf115464e9ac10c7177a90088a64d170907297389
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3532b52fcc881558bb6f51fd51e870d5c1d0429919adf91a31a4c3ca59eec67a3358686e2d88ec6c196fbb2fdc95ffb73e22ef32745416954bc662e57ef7932f
|
7
|
+
data.tar.gz: 802b48e9ec6fd7b7dcabb403355b097d84f793a780d392a6ea26eba66daa1216374b9ec792ea556fd09e8f5ce2818c3d8cd04c9db00240ac8a13c5f20d5c17b5
|
data/README.md
CHANGED
@@ -1,8 +1,20 @@
|
|
1
1
|
# Magic Test
|
2
2
|
|
3
|
-
Magic Test allows you to write Rails system tests interactively through a combination of trial-and-error in a debugger session and also just simple clicking around in the application being tested, all without the slowness of constantly restarting the testing environment.
|
3
|
+
Magic Test allows you to write Rails system tests interactively through a combination of trial-and-error in a debugger session and also just simple clicking around in the application being tested, all without the slowness of constantly restarting the testing environment. You can [see some videos of it in action](https://twitter.com/andrewculver/status/1366062684802846721)!
|
4
4
|
|
5
|
-
> Magic Test is still in early development, and that includes the documentation. Any questions you have that aren't already address in the documentation should be [opened as issues](https://github.com/bullet-train-co/magic_test/issues/new) so they can be appropriately addressed in the documentation.
|
5
|
+
> Magic Test is still in early development, and that includes the documentation. Any questions you have that aren't already address in the documentation should be [opened as issues](https://github.com/bullet-train-co/magic_test/issues/new) so they can be appropriately addressed in the documentation.
|
6
|
+
|
7
|
+
Magic Test was created by [Andrew Culver](http://twitter.com/andrewculver) and [Adam Pallozzi](https://twitter.com/adampallozzi).
|
8
|
+
|
9
|
+
## Sponsored By
|
10
|
+
|
11
|
+
<a href="https://bullettrain.co" target="_blank">
|
12
|
+
<img src="https://github.com/CanCanCommunity/cancancan/raw/develop/logo/bullet_train.png" alt="Bullet Train" width="400"/>
|
13
|
+
</a>
|
14
|
+
<br/>
|
15
|
+
<br/>
|
16
|
+
|
17
|
+
> Would you like to support Magic Test development and have your logo featured here? [Reach out!](http://twitter.com/andrewculver)
|
6
18
|
|
7
19
|
## Installation
|
8
20
|
|
@@ -59,7 +71,7 @@ If you have the screen real estate, we recommend organizing the three windows so
|
|
59
71
|
|
60
72
|
### Writing Tests Manually in the Debugger Console
|
61
73
|
|
62
|
-
You’re now free to
|
74
|
+
You’re now free to issue Capybara commands in the debugger and see their results in the Chrome browser. If you type something and you’re happy with the result, type `ok` and hit enter to have the last line or block of code you wrote added to the test.
|
63
75
|
|
64
76
|
When you’re done writing the test interactively, you can press <kbd>Control</kbd> + <kbd>D</kbd> to finish running the test.
|
65
77
|
|
@@ -85,6 +97,9 @@ The interactive actions you make in your app are not automatically written to yo
|
|
85
97
|
|
86
98
|
When generating test code, we check to ensure a given label or element identifier won’t result in multiple or ambiguous matches the next time a test runs. If that situation arises, we’ll try to generate the appropriate `within` blocks and selectors to ensure the target button or field is disambiguated.
|
87
99
|
|
100
|
+
## Acknowledgements
|
101
|
+
We'd like to thank [Florian Plank](https://twitter.com/polarblau), the author of [Capycorder](https://github.com/polarblau/capycorder). His earlier attempt at the same concept (implemented via a Chrome extension) was ahead of its time and provided us with great inspiration and lessons learned when solving this problem from another angle.
|
102
|
+
|
88
103
|
## Contributing
|
89
104
|
|
90
105
|
Bug reports and pull requests are welcome on GitHub at https://github.com/bullet-train-co/magic_test. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/magic_test/engine.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'magic_test/support'
|
2
|
+
require 'pry'
|
3
|
+
require 'pry-stack_explorer'
|
2
4
|
|
3
5
|
module MagicTest
|
4
6
|
class Engine < Rails::Engine
|
@@ -11,6 +13,8 @@ module MagicTest
|
|
11
13
|
if defined? ActionDispatch::IntegrationTest
|
12
14
|
ActionDispatch::IntegrationTest.include MagicTest::Support
|
13
15
|
end
|
16
|
+
|
17
|
+
|
14
18
|
end
|
15
19
|
end
|
16
20
|
end
|
data/lib/magic_test/support.rb
CHANGED
@@ -3,7 +3,10 @@ module MagicTest
|
|
3
3
|
def assert_selected_exists
|
4
4
|
selected_text = page.evaluate_script("window.selectedText()")
|
5
5
|
return if selected_text.blank?
|
6
|
-
|
6
|
+
|
7
|
+
# TODO this feels like it's going to end up burning people who have other support files in `test` or `spec` that don't include `helper` in the name.
|
8
|
+
filepath, line = caller.select { |s| s.include?("/test/") || s.include?("/spec/") }.reject { |s| s.include?("helper") }.first.split(':')
|
9
|
+
|
7
10
|
contents = File.open(filepath).read.lines
|
8
11
|
chunks = contents.each_slice(line.to_i - 1 + @test_lines_written).to_a
|
9
12
|
indentation = chunks[1].first.match(/^(\s*)/)[0]
|
@@ -81,7 +84,12 @@ module MagicTest
|
|
81
84
|
end
|
82
85
|
|
83
86
|
def empty_cache
|
84
|
-
|
87
|
+
begin
|
88
|
+
page.evaluate_script("sessionStorage.setItem('testingOutput', JSON.stringify([]))")
|
89
|
+
rescue Capybara::NotSupportedByDriverError => e
|
90
|
+
# TODO we need to add more robust instructions for this.
|
91
|
+
raise "You need to configure this test (or your test suite) to run in a real browser (Chrome, Firefox, etc.) in order for Magic Test to work. It also needs to run in non-headless mode if `ENV['MAGIC_TEST'].present?`"
|
92
|
+
end
|
85
93
|
end
|
86
94
|
|
87
95
|
def magic_test
|
data/lib/magic_test/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magic_test
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Culver
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|