Module: MagicTest::Support
- Defined in:
- lib/magic_test/support.rb
Instance Method Summary collapse
- #assert_selected_exists ⇒ Object
- #empty_cache ⇒ Object
- #flush ⇒ Object
- #magic_test ⇒ Object
- #ok ⇒ Object
- #track_keystrokes ⇒ Object
Instance Method Details
#assert_selected_exists ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/magic_test/support.rb', line 3 def assert_selected_exists selected_text = page.evaluate_script("window.selectedText()") return if selected_text.blank? filepath, line = get_last_caller(caller) contents = File.open(filepath).read.lines chunks = contents.each_slice(line.to_i - 1 + @test_lines_written).to_a indentation = chunks[1].first.match(/^(\s*)/)[0] chunks.first << indentation + "assert(page.has_content?('#{selected_text.gsub("'", "\\\\'")}'))" + "\n" @test_lines_written += 1 contents = chunks.flatten.join File.open(filepath, "w") do |file| file.puts(contents) end end |
#empty_cache ⇒ Object
71 72 73 74 75 76 |
# File 'lib/magic_test/support.rb', line 71 def empty_cache page.evaluate_script("sessionStorage.setItem('testingOutput', JSON.stringify([]))") rescue Capybara::NotSupportedByDriverError => _ # TODO we need to add more robust instructions for this. 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?`" end |
#flush ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/magic_test/support.rb', line 24 def flush filepath, line = get_last_caller(caller) contents = File.open(filepath).read.lines chunks = contents.each_slice(line.to_i - 1 + @test_lines_written).to_a indentation = chunks[1].first.match(/^(\s*)/)[0] output = page.evaluate_script("JSON.parse(sessionStorage.getItem('testingOutput'))") puts puts "javascript recorded on the front-end looks like this:" puts output puts puts "(writing that to `#{filepath}`.)" if output output.each do |last| chunks.first << indentation + "#{last["action"]} #{last["target"]}#{last["options"]}" + "\n" @test_lines_written += 1 end contents = chunks.flatten.join File.open(filepath, "w") do |file| file.puts(contents) end # clear the testing output now. empty_cache else puts "`window.testingOutput` was empty in the browser. Something must be wrong on the browser side." end true end |
#magic_test ⇒ Object
78 79 80 81 82 83 84 85 86 87 |
# File 'lib/magic_test/support.rb', line 78 def magic_test empty_cache @test_lines_written = 0 begin # 👋 This isn't helpful context. Type `up` and hit enter to see where you really are. binding.pry rescue retry end end |
#ok ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/magic_test/support.rb', line 53 def ok filepath, line = get_last_caller(caller) puts "(writing that to `#{filepath}`.)" contents = File.open(filepath).read.lines chunks = contents.each_slice(line.to_i - 1 + @test_lines_written).to_a indentation = chunks[1].first.match(/^(\s*)/)[0] get_last.each do |last| chunks.first << indentation + last + "\n" @test_lines_written += 1 end contents = chunks.flatten.join File.open(filepath, "w") do |file| file.puts(contents) end true end |
#track_keystrokes ⇒ Object
20 21 22 |
# File 'lib/magic_test/support.rb', line 20 def track_keystrokes page.evaluate_script("trackKeystrokes()") end |