From ae7daee4828a08288bd21948562f59632a0db533 Mon Sep 17 00:00:00 2001 From: anonymous Date: Sat, 24 Sep 2022 11:44:44 +0200 Subject: [PATCH] gem prep --- Makefile | 4 +- app.rb | 62 ------------------- bin/poke | 69 ++++++++++++++++++++++ client.rb => lib/client.rb | 0 fx.rb => lib/fx.rb | 0 routes.rb => lib/routes.rb | 4 ++ server.rb => lib/server.rb | 15 +++-- poke.gemspec | 12 ++++ {tests => pokes}/.keep | 0 {tests/project_name_here => pokes/tests}/basic.rb | 2 +- .../project_name_here => pokes/tests}/example.txt | 0 {views => pokes/views}/.keep | 0 {views => pokes/views}/page.haml | 0 {views => pokes/views}/proxied.haml | 0 {views => pokes/views}/upload.haml | 0 {views => pokes/views}/uploads.haml | 0 16 files changed, 95 insertions(+), 73 deletions(-) delete mode 100755 app.rb create mode 100755 bin/poke rename client.rb => lib/client.rb (100%) rename fx.rb => lib/fx.rb (100%) rename routes.rb => lib/routes.rb (63%) rename server.rb => lib/server.rb (92%) create mode 100644 poke.gemspec rename {tests => pokes}/.keep (100%) rename {tests/project_name_here => pokes/tests}/basic.rb (98%) rename {tests/project_name_here => pokes/tests}/example.txt (100%) rename {views => pokes/views}/.keep (100%) rename {views => pokes/views}/page.haml (100%) rename {views => pokes/views}/proxied.haml (100%) rename {views => pokes/views}/upload.haml (100%) rename {views => pokes/views}/uploads.haml (100%) diff --git a/Makefile b/Makefile index 0e8b782..552cc81 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ #!make test: - ruby app.rb + bin/poke test-visible: - ruby app.rb visible + bin/poke visible diff --git a/app.rb b/app.rb deleted file mode 100755 index f92bbd8..0000000 --- a/app.rb +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/ruby -require 'watir' -require 'watir-scroll' -require 'zeitwerk' - -loader = Zeitwerk::Loader.new -loader.push_dir __dir__ -loader.setup - -# @brief main -# -# @param argv: Array -# @param argc: Integer -# -# @return ? -# @since 0.1 -# -# @todo let the developer provide the list of tests that are ran -def main argv = [], argc - - if argv.include? '--server' - Server.run! - return false - end - - Thread.new { - Server.run! - } - - Thread.new { - Fx::pipe({ headless: ARGV.first != 'visible', - options: { - args: [ 'start-fullscreen' ] - } - }, - -> (opts) { - Watir::Browser.new :chrome, - opts - }, - -> (b) { - - Watir.default_timeout = 10 - b.window.resize_to 1366, 768 - - [ - Tests::ProjectNameHere::Basic - ].each do |c| - c.methods(false).sort.each do |m| - if "assert" != m[0..5] - next - end - Fx::perform c.method(m), b, "#{c}::#{m}" - end - end - - Server.stop! - }) - }.join - -end - -main ARGV, ARGV.count diff --git a/bin/poke b/bin/poke new file mode 100755 index 0000000..9c711e2 --- /dev/null +++ b/bin/poke @@ -0,0 +1,69 @@ +#!/usr/bin/ruby +require 'watir' +require 'watir-scroll' +require 'zeitwerk' + +loader = Zeitwerk::Loader.new +loader.push_dir __dir__.concat '/../lib' +loader.push_dir Dir.pwd.concat '/pokes' +loader.setup + +# @brief main +# +# @param argv: Array +# @param argc: Integer +# +# @return ? +# @since 0.1 +# +# @todo let the developer provide the list of tests that are ran +def main argv = [], argc + + if argv.include? '--server' + Server.run! + return false + end + + Thread.new { + Server.run! + } + + Thread.new { + Fx::pipe( + { headless: ARGV.first != 'visible', + options: { + args: [ 'start-fullscreen' ] + } + }, + -> (opts) { + Watir::Browser.new :firefox, + opts + }, + -> (b) { + + Watir.default_timeout = 10 + b.window.resize_to 1366, 768 + + Tests.constants.each do |c| + k = Tests.const_get(c) + + if !(k.is_a? Class) + next + end + + k.methods(false).sort.each do |m| + if "assert" != m[0..5] + next + end + Fx::perform k.method(m), b, "#{c}::#{m}" + end + end + + # todo: if Server.running? + Server.stop! + }) + }.join + +end + +main ARGV, ARGV.count diff --git a/client.rb b/lib/client.rb similarity index 100% rename from client.rb rename to lib/client.rb diff --git a/fx.rb b/lib/fx.rb similarity index 100% rename from fx.rb rename to lib/fx.rb diff --git a/routes.rb b/lib/routes.rb similarity index 63% rename from routes.rb rename to lib/routes.rb index d3c3d84..d01a1d5 100644 --- a/routes.rb +++ b/lib/routes.rb @@ -3,6 +3,10 @@ require 'haml' class Routes < Sinatra::Base + set :views, Proc.new{ + File.join root, '/../', 'pokes', 'views' + } + get 'custom/routes' do return 'hello world' end diff --git a/server.rb b/lib/server.rb similarity index 92% rename from server.rb rename to lib/server.rb index de4c2e9..754e319 100644 --- a/server.rb +++ b/lib/server.rb @@ -18,7 +18,7 @@ class Server < Routes 'http://localhost:4567/proxied', { 'Accept' => 'text/html' } end - + get '/api/json/masked' do puts request.env['HTTP_AUTHORIZATION'] return '{"result":"masked"}' @@ -41,7 +41,7 @@ class Server < Routes } }) end - + get '/upload' do haml :upload end @@ -59,11 +59,10 @@ class Server < Routes -> (t) { t.each { |f| File.delete f } haml :uploads, { - locals: { - data: t - } - } + locals: { + data: t + } + } }) - end - + end end diff --git a/poke.gemspec b/poke.gemspec new file mode 100644 index 0000000..5e5fd07 --- /dev/null +++ b/poke.gemspec @@ -0,0 +1,12 @@ +Gem::Specification.new do |s| + s.name = 'pokes' + s.version = '0.0.1' + s.platform = Gem::Platform:RUBY + s.summary = 'e2e tests, API-first' + s.description = 'FP browser automation, pessimistic testing, HAML proxies' + s.authors = ['Luka Licina'] + s.email = ['licina.luka@outlook.com'] + s.license = 'MIT' + s.files = Dir.glob('{lib,bin}/**/*') + s.require_path = 'lib' +end diff --git a/tests/.keep b/pokes/.keep similarity index 100% rename from tests/.keep rename to pokes/.keep diff --git a/tests/project_name_here/basic.rb b/pokes/tests/basic.rb similarity index 98% rename from tests/project_name_here/basic.rb rename to pokes/tests/basic.rb index 717de45..d0239a4 100644 --- a/tests/project_name_here/basic.rb +++ b/pokes/tests/basic.rb @@ -1,4 +1,4 @@ -module Tests::ProjectNameHere +module Tests class Basic # @return bool diff --git a/tests/project_name_here/example.txt b/pokes/tests/example.txt similarity index 100% rename from tests/project_name_here/example.txt rename to pokes/tests/example.txt diff --git a/views/.keep b/pokes/views/.keep similarity index 100% rename from views/.keep rename to pokes/views/.keep diff --git a/views/page.haml b/pokes/views/page.haml similarity index 100% rename from views/page.haml rename to pokes/views/page.haml diff --git a/views/proxied.haml b/pokes/views/proxied.haml similarity index 100% rename from views/proxied.haml rename to pokes/views/proxied.haml diff --git a/views/upload.haml b/pokes/views/upload.haml similarity index 100% rename from views/upload.haml rename to pokes/views/upload.haml diff --git a/views/uploads.haml b/pokes/views/uploads.haml similarity index 100% rename from views/uploads.haml rename to pokes/views/uploads.haml