zena 1.2.7 → 1.2.8
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.
- data/History.txt +80 -25
- data/Rakefile +2 -2
- data/app/controllers/columns_controller.rb +2 -2
- data/app/controllers/nodes_controller.rb +22 -29
- data/app/controllers/user_sessions_controller.rb +35 -10
- data/app/controllers/users_controller.rb +2 -2
- data/app/controllers/versions_controller.rb +2 -2
- data/app/models/group.rb +15 -1
- data/app/models/node.rb +109 -8
- data/app/models/role.rb +4 -0
- data/app/models/site.rb +64 -58
- data/app/models/template.rb +1 -1
- data/app/models/user.rb +135 -29
- data/app/models/user_session.rb +0 -1
- data/app/models/virtual_class.rb +11 -6
- data/app/views/columns/_form.html.erb +3 -1
- data/app/views/columns/_li.html.erb +1 -1
- data/app/views/columns/create.rjs +1 -1
- data/app/views/groups/_form.rhtml +16 -13
- data/app/views/relations/_form.erb +18 -6
- data/app/views/sites/_form.erb +12 -6
- data/app/views/users/_form.rhtml +23 -8
- data/app/views/users/_li.rhtml +14 -3
- data/app/views/users/index.rhtml +1 -1
- data/app/views/virtual_classes/_form.erb +12 -2
- data/app/views/zafu/default/Node-+login.zafu +8 -1
- data/app/views/zafu/default/Node-+search.zafu +1 -1
- data/bricks/acls/lib/bricks/acls.rb +1 -0
- data/bricks/acls/zena/migrate/20130903150356_longer_names_for_acl.rb +9 -0
- data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
- data/bricks/currency/lib/bricks/currency.rb +120 -0
- data/bricks/currency/zena/test/unit/currency_test.rb +43 -0
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node-+search.zafu +1 -1
- data/bricks/fs_skin/zena/skins/blog/Node.zafu +1 -1
- data/bricks/fs_skin/zena/test/unit/fs_skin_view_test.rb +35 -0
- data/bricks/pdf/lib/bricks/pdf.rb +1 -1
- data/bricks/sphinx/lib/bricks/sphinx.rb +2 -0
- data/bricks/sphinx/zena/init.rb +14 -0
- data/bricks/tags/zena/test/zafu/tags.yml +5 -1
- data/bricks/worker/lib/bricks/worker.rb +3 -2
- data/bricks/zena/zena/migrate/20130829093753_add_versioned_flag_to_column.rb +10 -0
- data/bricks/zena/zena/migrate/20130903084909_count_login_attempts.rb +11 -0
- data/bricks/zena/zena/migrate/20131104153126_index_fullpath.rb +10 -0
- data/bricks/zena/zena/migrate/20131104210011_rebuild_fullpath_after_change.rb +10 -0
- data/bricks/zena/zena/migrate/20131105160420_add_skin_id_to_sites.rb +9 -0
- data/bricks/zena/zena/migrate/20131105175822_add_profile_to_users.rb +11 -0
- data/bricks/zena/zena/migrate/20140213120038_fix_idx_scope.rb +13 -0
- data/bricks/zena/zena/migrate/20140628140247_add_site_readonly.rb +9 -0
- data/config/bricks.yml +8 -4
- data/config/gems.yml +5 -3
- data/db/init/base/skins/default/Node-+login.zafu +8 -1
- data/db/init/base/skins/default/Node-+search.zafu +1 -1
- data/lib/bricks/loader.rb +5 -5
- data/lib/gettext_strings.rb +3 -0
- data/lib/tasks/zena.rake +25 -22
- data/lib/zafu/process/context.rb +4 -0
- data/lib/zena/acts/secure_node.rb +3 -3
- data/lib/zena/app.rb +1 -0
- data/lib/zena/deploy.rb +1 -1
- data/lib/zena/deploy/template.rb +1 -1
- data/lib/zena/foxy_parser.rb +5 -2
- data/lib/zena/info.rb +1 -1
- data/lib/zena/site_worker.rb +2 -2
- data/lib/zena/test_controller.rb +5 -2
- data/lib/zena/use/action.rb +9 -2
- data/lib/zena/use/ajax.rb +20 -4
- data/lib/zena/use/ancestry.rb +89 -15
- data/lib/zena/use/authlogic.rb +8 -2
- data/lib/zena/use/context.rb +1 -0
- data/lib/zena/use/display.rb +1 -97
- data/lib/zena/use/forms.rb +28 -8
- data/lib/zena/use/html_tags.rb +16 -7
- data/lib/zena/use/i18n.rb +1 -1
- data/lib/zena/use/prop_eval.rb +6 -1
- data/lib/zena/use/query_node.rb +69 -4
- data/lib/zena/use/recursion.rb +1 -1
- data/lib/zena/use/refactor.rb +5 -2
- data/lib/zena/use/relations.rb +1 -0
- data/lib/zena/use/rendering.rb +7 -4
- data/lib/zena/use/test_helper.rb +8 -4
- data/lib/zena/use/upload.rb +14 -0
- data/lib/zena/use/urls.rb +39 -23
- data/lib/zena/use/version_hash.rb +5 -2
- data/lib/zena/use/workflow.rb +116 -70
- data/lib/zena/use/zafu_eval.rb +41 -0
- data/lib/zena/use/zafu_safe_definitions.rb +1 -0
- data/lib/zena/use/zafu_templates.rb +32 -26
- data/lib/zena/use/zazen.rb +8 -7
- data/locale/app.pot +5 -1
- data/locale/de/LC_MESSAGES/zena.mo +0 -0
- data/locale/de/zena.po +385 -281
- data/locale/en/LC_MESSAGES/zena.mo +0 -0
- data/locale/en/zena.po +378 -271
- data/locale/fr/LC_MESSAGES/zena.mo +0 -0
- data/locale/fr/zena.po +387 -272
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.po +433 -404
- data/locale/zena.pot +362 -268
- data/public/javascripts/grid.js +280 -104
- data/public/javascripts/zena.js +43 -15
- data/public/stylesheets/admin.css +8 -2
- data/public/stylesheets/grid.css +5 -2
- data/public/stylesheets/popup.css +1 -1
- data/test/fixtures/files/TestNode.zafu +51 -0
- data/test/functional/nodes_controller_test.rb +20 -5
- data/test/functional/user_sessions_controller_test.rb +41 -6
- data/test/functional/users_controller_test.rb +1 -2
- data/test/integration/navigation_test.rb +22 -4
- data/test/integration/query_node/basic.yml +7 -0
- data/test/integration/query_node/complex.yml +1 -1
- data/test/integration/query_node/errors.yml +1 -1
- data/test/integration/query_node/filters.yml +34 -1
- data/test/integration/query_node/relations.yml +6 -13
- data/test/integration/query_node_test.rb +22 -3
- data/test/integration/zafu_compiler/action.yml +1 -1
- data/test/integration/zafu_compiler/alias_site.yml +52 -0
- data/test/integration/zafu_compiler/complex.yml +1 -1
- data/test/integration/zafu_compiler/complex_ok.yml +5 -5
- data/test/integration/zafu_compiler/context.yml +1 -1
- data/test/integration/zafu_compiler/display.yml +56 -5
- data/test/integration/zafu_compiler/forms.yml +35 -2
- data/test/integration/zafu_compiler/meta.yml +4 -0
- data/test/integration/zafu_compiler/rubyless.yml +1 -1
- data/test/integration/zafu_compiler/safe_definitions.yml +4 -0
- data/test/integration/zafu_compiler/security.yml +10 -0
- data/test/integration/zafu_compiler/site.yml +5 -1
- data/test/integration/zafu_compiler/urls.yml +8 -2
- data/test/integration/zafu_compiler/zafu_attributes.yml +2 -1
- data/test/integration/zafu_compiler/zazen.yml +4 -0
- data/test/integration/zafu_compiler_test.rb +47 -4
- data/test/selenium/Grid/grid1.rsel +8 -8
- data/test/sites/complex/sites.yml +2 -2
- data/test/sites/complex/users.yml +1 -0
- data/test/sites/zena/columns.yml +4 -0
- data/test/sites/zena/sites.yml +1 -0
- data/test/sites/zena/users.yml +1 -0
- data/test/unit/node_test.rb +53 -5
- data/test/unit/note_test.rb +1 -1
- data/test/unit/relation_proxy_test.rb +20 -0
- data/test/unit/role_test.rb +2 -0
- data/test/unit/site_test.rb +28 -6
- data/test/unit/user_test.rb +332 -1
- data/test/unit/virtual_class_test.rb +55 -0
- data/test/unit/workflow_test.rb +175 -0
- data/test/unit/zena/use/ancestry_test.rb +52 -10
- data/test/unit/zena/use/prop_eval_test.rb +44 -0
- data/test/unit/zena/use/rendering_test.rb +48 -2
- data/test/unit/zena/use/upload_test.rb +15 -13
- data/test/unit/zena/use/urls_test.rb +1 -0
- data/vendor/plugins/ar_mysql_full_text/lib/ar_mysql_full_text.rb +39 -25
- data/zena.gemspec +69 -307
- metadata +143 -368
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run 2.tmCommand +0 -24
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Context.tmCommand +0 -58
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run Focused Should.tmCommand +0 -88
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/Run.tmCommand +0 -27
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Commands/YAML to Shoulda.tmCommand +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Context.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Preferences/Symbol List: Should.tmPreferences +0 -19
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory attributes for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory build.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define with class.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_define.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_next.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/Factory_sequence.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_bad_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_contains.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_does_not_contain.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_good_value.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_same_elements.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_save.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_sent_email.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/assert_valid.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/association.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/attribute.tmSnippet +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/before_should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block get.tmSnippet +0 -22
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block post.tmSnippet +0 -23
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/context block with setup.tmSnippet +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/setup.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block with before proc.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should block.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful denied.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_be_restful.tmSnippet +0 -20
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_belong_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change by.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_change from to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_at_least.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_length_is.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_ensure_value_in_range.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_eventually.tmSnippet +0 -18
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_filter_params.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_and_belong_to_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_class_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_column.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_db_columns.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_index.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_indices.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_instance_methods.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_many.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_named_scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_one.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_have_readonly_attributes.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_mass_assignment_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_allow_values_for.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_assign_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_change.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_not_set_the_flash.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_redirect_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_a_form.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_template.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_with_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_render_without_layout.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_respond_with_content_type.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_return_from_session.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_route.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_set_the_flash_to.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_acceptance_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_numericality_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_presence_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of with scope.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Snippets/should_validate_uniqueness_of.tmSnippet +0 -16
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/run_script.rb +0 -104
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/test.rb +0 -17
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/RubyMate/todo.txt +0 -13
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Support/bin/yaml_to_shoulda.rb +0 -25
- data/vendor/TextMate/Ruby Shoulda.tmbundle/Syntaxes/Ruby on Rails (Shoulda).tmLanguage +0 -166
- data/vendor/TextMate/Ruby Shoulda.tmbundle/info.plist +0 -304
- data/vendor/TextMate/Zena.tmbundle/Commands/Run all yaml tests.tmCommand +0 -37
- data/vendor/TextMate/Zena.tmbundle/Commands/Run focused yaml test.tmCommand +0 -52
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/catch_exception.rb +0 -39
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/run_script.rb +0 -118
- data/vendor/TextMate/Zena.tmbundle/Support/RubyMate/stdin_dialog.rb +0 -14
- data/vendor/TextMate/Zena.tmbundle/info.plist +0 -17
- data/vendor/plugins/selenium-on-rails/CHANGELOG +0 -125
- data/vendor/plugins/selenium-on-rails/LICENSE-2.0.txt +0 -202
- data/vendor/plugins/selenium-on-rails/README.md +0 -202
- data/vendor/plugins/selenium-on-rails/Rakefile +0 -38
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumController.html +0 -265
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumHelper.html +0 -148
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails.html +0 -126
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/FixtureLoader.html +0 -231
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/PartialsSupport.html +0 -195
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Paths.html +0 -295
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/RSelenese.html +0 -219
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Renderer.html +0 -156
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/Selenese.html +0 -179
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/SuiteRenderer.html +0 -223
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilder.html +0 -441
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderAccessors.html +0 -3098
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderActions.html +0 -2080
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserAccessors.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRails/TestBuilderUserActions.html +0 -116
- data/vendor/plugins/selenium-on-rails/doc/classes/SeleniumOnRailsConfig.html +0 -150
- data/vendor/plugins/selenium-on-rails/doc/files/CHANGELOG.html +0 -422
- data/vendor/plugins/selenium-on-rails/doc/files/README.html +0 -321
- data/vendor/plugins/selenium-on-rails/doc/files/lib/controllers/selenium_controller_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_helper_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/acceptance_test_runner_rb.html +0 -222
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/fixture_loader_rb.html +0 -109
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/partials_support_rb.html +0 -111
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/paths_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/rselenese_rb.html +0 -118
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/selenese_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/suite_renderer_rb.html +0 -101
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_accessors_rb.html +0 -114
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_actions_rb.html +0 -113
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails/test_builder_rb.html +0 -120
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_config_rb.html +0 -108
- data/vendor/plugins/selenium-on-rails/doc/files/lib/selenium_on_rails_rb.html +0 -115
- data/vendor/plugins/selenium-on-rails/doc/fr_class_index.html +0 -42
- data/vendor/plugins/selenium-on-rails/doc/fr_file_index.html +0 -43
- data/vendor/plugins/selenium-on-rails/doc/fr_method_index.html +0 -182
- data/vendor/plugins/selenium-on-rails/doc/index.html +0 -24
- data/vendor/plugins/selenium-on-rails/doc/rdoc-style.css +0 -208
- data/vendor/plugins/selenium-on-rails/generators/selenium/USAGE +0 -19
- data/vendor/plugins/selenium-on-rails/generators/selenium/selenium_generator.rb +0 -50
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rhtml.rhtml +0 -16
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/rselenese.rhtml +0 -14
- data/vendor/plugins/selenium-on-rails/generators/selenium/templates/selenese.rhtml +0 -11
- data/vendor/plugins/selenium-on-rails/init.rb +0 -15
- data/vendor/plugins/selenium-on-rails/lib/controllers/selenium_controller.rb +0 -122
- data/vendor/plugins/selenium-on-rails/lib/controllers/switch_environment_controller.rb +0 -16
- data/vendor/plugins/selenium-on-rails/lib/selenium_helper.rb +0 -8
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails.rb +0 -11
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/acceptance_test_runner.rb +0 -215
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/fixture_loader.rb +0 -57
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/partials_support.rb +0 -36
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/paths.rb +0 -61
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/renderer.rb +0 -20
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/rselenese.rb +0 -44
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/selenese.rb +0 -87
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/suite_renderer.rb +0 -56
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder.rb +0 -116
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_accessors.rb +0 -1002
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_actions.rb +0 -514
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_accessors.rb.example +0 -91
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails/test_builder_user_actions.rb.example +0 -24
- data/vendor/plugins/selenium-on-rails/lib/selenium_on_rails_config.rb +0 -30
- data/vendor/plugins/selenium-on-rails/lib/views/layouts/layout.rhtml +0 -18
- data/vendor/plugins/selenium-on-rails/lib/views/record.rhtml +0 -5
- data/vendor/plugins/selenium-on-rails/lib/views/selenium_helper.rb +0 -9
- data/vendor/plugins/selenium-on-rails/lib/views/setup.rhtml +0 -67
- data/vendor/plugins/selenium-on-rails/lib/views/test_suite.rhtml +0 -26
- data/vendor/plugins/selenium-on-rails/routes.rb +0 -24
- data/vendor/plugins/selenium-on-rails/selenium-core/Blank.html +0 -7
- data/vendor/plugins/selenium-on-rails/selenium-core/InjectedRemoteRunner.html +0 -8
- data/vendor/plugins/selenium-on-rails/selenium-core/RemoteRunner.html +0 -110
- data/vendor/plugins/selenium-on-rails/selenium-core/SeleniumLog.html +0 -109
- data/vendor/plugins/selenium-on-rails/selenium-core/TestPrompt.html +0 -145
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner-splash.html +0 -55
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.hta +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/TestRunner.html +0 -177
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butmin.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/butplus.gif +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.css +0 -298
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/domviewer.html +0 -16
- data/vendor/plugins/selenium-on-rails/selenium-core/domviewer/selenium-domviewer.js +0 -205
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/all.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/continue_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/pause_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/selected.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/icons/step_disabled.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc-core.xml +0 -1759
- data/vendor/plugins/selenium-on-rails/selenium-core/iedoc.xml +0 -1800
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/prototype.js +0 -2006
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/builder.js +0 -101
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/controls.js +0 -815
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/effects.js +0 -958
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/slider.js +0 -283
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/scriptaculous/unittest.js +0 -383
- data/vendor/plugins/selenium-on-rails/selenium-core/lib/snapsie.js +0 -91
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/find_matching_child.js +0 -69
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/htmlutils.js +0 -1616
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/injection.html +0 -72
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-api.js +0 -3184
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserbot.js +0 -2300
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-browserdetect.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-commandhandlers.js +0 -377
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-executionloop.js +0 -175
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-logging.js +0 -148
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-remoterunner.js +0 -695
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-testrunner.js +0 -1362
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/selenium-version.js +0 -5
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-doc.html +0 -803
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-element.js +0 -1537
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/ui-map-sample.js +0 -979
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js +0 -3
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/user-extensions.js.sample +0 -75
- data/vendor/plugins/selenium-on-rails/selenium-core/scripts/xmlextras.js +0 -153
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-logo.png +0 -0
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium-test.css +0 -43
- data/vendor/plugins/selenium-on-rails/selenium-core/selenium.css +0 -316
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/dom.js +0 -566
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/javascript-xpath-0.1.11.js +0 -2816
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/util.js +0 -549
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xmltoken.js +0 -149
- data/vendor/plugins/selenium-on-rails/selenium-core/xpath/xpath.js +0 -2450
- data/vendor/plugins/selenium-on-rails/tasks/test_acceptance.rake +0 -8
- data/vendor/plugins/selenium-on-rails/test/fixtures/config.yml +0 -37
- data/vendor/plugins/selenium-on-rails/test/fixtures/selenium.yml +0 -27
- data/vendor/plugins/selenium-on-rails/test/paths_test.rb +0 -72
- data/vendor/plugins/selenium-on-rails/test/renderer_test.rb +0 -157
- data/vendor/plugins/selenium-on-rails/test/rselenese_test.rb +0 -708
- data/vendor/plugins/selenium-on-rails/test/selenese_test.rb +0 -242
- data/vendor/plugins/selenium-on-rails/test/selenium_controller_test.rb +0 -67
- data/vendor/plugins/selenium-on-rails/test/selenium_on_rails_config_test.rb +0 -43
- data/vendor/plugins/selenium-on-rails/test/selenium_support_test.rb +0 -35
- data/vendor/plugins/selenium-on-rails/test/setup_test.rb +0 -31
- data/vendor/plugins/selenium-on-rails/test/suite_renderer_test.rb +0 -109
- data/vendor/plugins/selenium-on-rails/test/switch_environment_controller_test.rb +0 -17
- data/vendor/plugins/selenium-on-rails/test/test_builder_functions_authortest.rb +0 -51
- data/vendor/plugins/selenium-on-rails/test/test_helper.rb +0 -101
- data/vendor/plugins/selenium-on-rails/test_data/_partial.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/own_layout.html +0 -12
- data/vendor/plugins/selenium-on-rails/test_data/partials/_html.html +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_nesting.rsel +0 -2
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rhtml.rhtml +0 -6
- data/vendor/plugins/selenium-on-rails/test_data/partials/_rsel.rsel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/partials/_sel.sel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/partials/all_partials.rsel +0 -5
- data/vendor/plugins/selenium-on-rails/test_data/rhtml.rhtml +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/rselenese.rsel +0 -8
- data/vendor/plugins/selenium-on-rails/test_data/selenese.sel +0 -7
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/subsuite/suite_one_subsuite_testcase.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase1.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_one/suite_one_testcase2.sel +0 -1
- data/vendor/plugins/selenium-on-rails/test_data/suite_two/suite_two_testcase.sel +0 -1
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
Description:
|
|
2
|
-
Generates a stub Selenium test case.
|
|
3
|
-
|
|
4
|
-
Examples:
|
|
5
|
-
./script/generate selenium login
|
|
6
|
-
will create:
|
|
7
|
-
/test/selenium/login.sel
|
|
8
|
-
|
|
9
|
-
./script/generate selenium user/create
|
|
10
|
-
will create:
|
|
11
|
-
/test/selenium/user/create.sel
|
|
12
|
-
|
|
13
|
-
./script/generate selenium login.rsel
|
|
14
|
-
will create:
|
|
15
|
-
/test/selenium/login.rsel
|
|
16
|
-
|
|
17
|
-
./script/generate selenium logout.rhtml
|
|
18
|
-
will create:
|
|
19
|
-
/test/selenium/logout.rhtml
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
class SeleniumGenerator < Rails::Generator::Base
|
|
2
|
-
def initialize runtime_args, runtime_options = {}
|
|
3
|
-
super
|
|
4
|
-
usage if @args.empty?
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def banner
|
|
8
|
-
"Usage: #{$0} #{spec.name} testname [options]"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def manifest
|
|
12
|
-
record do |m|
|
|
13
|
-
path = 'test/selenium'
|
|
14
|
-
path = File.join(path, suite_path) unless suite_path.empty?
|
|
15
|
-
m.directory path
|
|
16
|
-
|
|
17
|
-
template = case File.extname(filename)
|
|
18
|
-
when '.rhtml' then 'rhtml.rhtml'
|
|
19
|
-
when '.rsel' then 'rselenese.rhtml'
|
|
20
|
-
else 'selenese.rhtml'
|
|
21
|
-
end
|
|
22
|
-
m.template template, File.join(path, filename)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def filename
|
|
27
|
-
name = File.basename args[0]
|
|
28
|
-
extensions = ['.sel', '.rhtml', '.rsel']
|
|
29
|
-
name = "#{name}.sel" unless extensions.include? File.extname(name)
|
|
30
|
-
name
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def suite_path
|
|
34
|
-
sp = File.dirname args[0]
|
|
35
|
-
sp = '' if sp == '.'
|
|
36
|
-
sp
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def testcase_link
|
|
40
|
-
l = "http://localhost:3000/selenium/tests/"
|
|
41
|
-
l = "#{l}#{suite_path}/" unless suite_path.empty?
|
|
42
|
-
l + filename
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def suite_link
|
|
46
|
-
l = "http://localhost:3000/selenium"
|
|
47
|
-
l = "#{l}/TestRunner.html?test=tests/#{suite_path}" unless suite_path.empty?
|
|
48
|
-
l
|
|
49
|
-
end
|
|
50
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<p>It's often a good idea to start the test with opening <tt>/selenium/setup</tt> (see <%%= link_to 'here', :controller => 'selenium', :action => 'setup' %> for more info).</p>
|
|
2
|
-
|
|
3
|
-
<table>
|
|
4
|
-
<tr><th colspan="3"><%%= @page_title %></th></tr>
|
|
5
|
-
<tr><td>open</td><td>/selenium/setup</td><td> </td></tr>
|
|
6
|
-
<%% for page in ['/', '/home'] -%>
|
|
7
|
-
<tr><td>open</td><td><%%= page %></td><td> </td></tr>
|
|
8
|
-
<tr><td>assertTitle</td><td>Home</td><td> </td></tr>
|
|
9
|
-
<%% end -%>
|
|
10
|
-
</table>
|
|
11
|
-
|
|
12
|
-
<p>More information about the commands is available <a href="http://release.openqa.org/selenium-core/nightly/reference.html">here</a>.</p>
|
|
13
|
-
|
|
14
|
-
<p>You can write comments above and below the commands, but you can only have one set of commands, i.e. one table, per test.</p>
|
|
15
|
-
|
|
16
|
-
<p>Point the browser to <a href="<%= testcase_link %>"><%= testcase_link %></a> to see how this test is rendered, or to <a href="<%= suite_link %>"><%= suite_link %></a> to run the suite.</p>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# It's often a good idea to start the test with 'setup'.
|
|
2
|
-
# See /selenium/setup for more info.
|
|
3
|
-
|
|
4
|
-
setup
|
|
5
|
-
open '/'
|
|
6
|
-
assert_title 'Home'
|
|
7
|
-
|
|
8
|
-
# More information about the commands is available at:
|
|
9
|
-
# http://release.openqa.org/selenium-core/nightly/reference.html
|
|
10
|
-
# See also the RDoc for SeleniumOnRails::TestBuilder.
|
|
11
|
-
#
|
|
12
|
-
# Point the browser to <%= testcase_link %> to see
|
|
13
|
-
# how this test is rendered, or to <%= suite_link %> to
|
|
14
|
-
# run the suite.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
It's often a good idea to start the test with opening <tt>/selenium/setup</tt> (see "here":/selenium/setup for more info).
|
|
2
|
-
|
|
3
|
-
|open|/selenium/setup|
|
|
4
|
-
|open|/|
|
|
5
|
-
|assertTitle|Home|
|
|
6
|
-
|
|
7
|
-
More information about the commands is available "here":http://release.openqa.org/selenium-core/nightly/reference.html.
|
|
8
|
-
|
|
9
|
-
You can write comments above and below the commands, but you can only have one set of commands, i.e. one table, per test. "RedCloth":http://www.whytheluckystiff.net/ruby/redcloth/ is used for formatting if installed.
|
|
10
|
-
|
|
11
|
-
Point the browser to "<%= testcase_link %>":<%= testcase_link %> to see how this test is rendered, or to "<%= suite_link %>":<%= suite_link %> to run the suite.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require 'selenium_on_rails_config'
|
|
2
|
-
envs = SeleniumOnRailsConfig.get :environments
|
|
3
|
-
|
|
4
|
-
if envs.include? RAILS_ENV
|
|
5
|
-
#initialize the plugin
|
|
6
|
-
$LOAD_PATH << File.dirname(__FILE__) + "/lib/controllers"
|
|
7
|
-
require 'selenium_controller'
|
|
8
|
-
require File.dirname(__FILE__) + '/routes'
|
|
9
|
-
|
|
10
|
-
SeleniumController.prepend_view_path File.expand_path(File.dirname(__FILE__) + '/lib/views')
|
|
11
|
-
else
|
|
12
|
-
#erase all traces
|
|
13
|
-
$LOAD_PATH.delete lib_path
|
|
14
|
-
end
|
|
15
|
-
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
require 'webrick/httputils'
|
|
2
|
-
|
|
3
|
-
class SeleniumController < ActionController::Base
|
|
4
|
-
include SeleniumOnRails::FixtureLoader
|
|
5
|
-
include SeleniumOnRails::Renderer
|
|
6
|
-
|
|
7
|
-
def initialize
|
|
8
|
-
@result_dir = SeleniumOnRailsConfig.get(:result_dir)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def setup
|
|
12
|
-
unless params.has_key? :keep_session
|
|
13
|
-
reset_session # IS THIS WORKING! NO THINK SO
|
|
14
|
-
@session_wiped = true
|
|
15
|
-
end
|
|
16
|
-
@cleared_tables = clear_tables params[:clear_tables].to_s
|
|
17
|
-
@loaded_fixtures = load_fixtures params[:fixtures].to_s
|
|
18
|
-
render :file => view_path('setup.rhtml'), :layout => layout_path\
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_file
|
|
22
|
-
params[:testname] = '' if params[:testname].to_s == 'TestSuite.html'
|
|
23
|
-
filename = File.join selenium_tests_path, params[:testname]
|
|
24
|
-
if File.directory? filename
|
|
25
|
-
@suite_path = filename
|
|
26
|
-
render :file => view_path('test_suite.rhtml'), :layout => layout_path
|
|
27
|
-
elsif File.readable? filename
|
|
28
|
-
render_test_case filename
|
|
29
|
-
else
|
|
30
|
-
if File.directory? selenium_tests_path
|
|
31
|
-
render :text => 'Not found', :status => 404
|
|
32
|
-
else
|
|
33
|
-
render :text => "Did not find the Selenium tests path (#{selenium_tests_path}). Run script/generate selenium", :status => 404
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def support_file
|
|
39
|
-
if params[:filename].empty?
|
|
40
|
-
redirect_to :filename => 'TestRunner.html', :test => 'tests'
|
|
41
|
-
return
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
filename = File.join selenium_path, params[:filename]
|
|
45
|
-
if File.file? filename
|
|
46
|
-
type = WEBrick::HTTPUtils::DefaultMimeTypes[$1.downcase] if filename =~ /\.(\w+)$/
|
|
47
|
-
type ||= 'text/html'
|
|
48
|
-
send_file filename, :type => type, :disposition => 'inline', :stream => false
|
|
49
|
-
else
|
|
50
|
-
render :text => 'Not found', :status => 404
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def record
|
|
55
|
-
dir = record_table
|
|
56
|
-
|
|
57
|
-
@result = {'resultDir' => dir}
|
|
58
|
-
['result', 'numTestFailures', 'numTestPasses', 'numCommandFailures', 'numCommandPasses', 'numCommandErrors', 'totalTime'].each do |item|
|
|
59
|
-
@result[item] = params[item]
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
File.open(log_path(params[:logFile] || 'default.yml'), 'w') {|f| YAML.dump(@result, f)}
|
|
63
|
-
|
|
64
|
-
render :file => view_path('record.rhtml'), :layout => layout_path
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def record_table
|
|
68
|
-
return nil unless @result_dir
|
|
69
|
-
|
|
70
|
-
cur_result_dir = File.join(@result_dir, (params[:logFile] || "default").sub(/\.yml$/, ''))
|
|
71
|
-
FileUtils.mkdir_p(cur_result_dir)
|
|
72
|
-
File.open("#{cur_result_dir}/index.html", "wb") do |f|
|
|
73
|
-
f.write <<EOS
|
|
74
|
-
<html>
|
|
75
|
-
<head><title>Selenium Test Result</title></head>
|
|
76
|
-
<frameset cols="30%,*">
|
|
77
|
-
<frame name="suite" src="suite.html">
|
|
78
|
-
<frame name="testcase" src="blank.html">
|
|
79
|
-
</frameset>
|
|
80
|
-
</html>
|
|
81
|
-
EOS
|
|
82
|
-
end
|
|
83
|
-
html_header = <<EOS
|
|
84
|
-
<html>
|
|
85
|
-
<head>
|
|
86
|
-
<link rel="stylesheet" type="text/css" href="selenium-test.css">
|
|
87
|
-
</head>
|
|
88
|
-
<body>
|
|
89
|
-
EOS
|
|
90
|
-
html_footer = "</body></html>\n"
|
|
91
|
-
if selenium_path
|
|
92
|
-
css_file = File.join selenium_path, "selenium-test.css"
|
|
93
|
-
if File.exist?(css_file)
|
|
94
|
-
FileUtils.cp css_file, cur_result_dir
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
File.open("#{cur_result_dir}/blank.html", "wb") do |f|
|
|
98
|
-
f.write "<html><body></body></html>"
|
|
99
|
-
end
|
|
100
|
-
File.open("#{cur_result_dir}/suite.html", "wb") do |f|
|
|
101
|
-
suite = params[:suite]
|
|
102
|
-
suite.sub!(/^.*(<table[\s>])/im, '\1')
|
|
103
|
-
i = 1
|
|
104
|
-
suite.gsub!(/(\shref=)"[^"]*"/i) do |m|
|
|
105
|
-
link = "#{$1}\"test#{i}.html\" target=\"testcase\""
|
|
106
|
-
File.open("#{cur_result_dir}/test#{i}.html", "wb") do |testcase|
|
|
107
|
-
testcase.write html_header
|
|
108
|
-
testcase.write(params["testTable.#{i}"])
|
|
109
|
-
testcase.write html_footer
|
|
110
|
-
end
|
|
111
|
-
i += 1
|
|
112
|
-
link
|
|
113
|
-
end
|
|
114
|
-
f.write html_header
|
|
115
|
-
f.write suite
|
|
116
|
-
f.write html_footer
|
|
117
|
-
end
|
|
118
|
-
cur_result_dir
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
private :record_table
|
|
122
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
class SwitchEnvironmentController < ActionController::Base
|
|
2
|
-
def index
|
|
3
|
-
readme_path = File.expand_path File.join(File.dirname(__FILE__), '..', 'README')
|
|
4
|
-
render :status => 500, :locals => {:readme_path => readme_path }, :inline => <<END
|
|
5
|
-
<p>
|
|
6
|
-
Selenium on Rails is only activated for <%= SeleniumOnRailsConfig.get(:environments).join ', ' %>
|
|
7
|
-
environment<%= SeleniumOnRailsConfig.get(:environments).size > 1 ? 's' : '' %> (you're running
|
|
8
|
-
<%= RAILS_ENV %>).
|
|
9
|
-
</p>
|
|
10
|
-
<p>
|
|
11
|
-
Start your server in a different environment or see <tt><%= readme_path %></tt>
|
|
12
|
-
for information regarding how to change this behavior.
|
|
13
|
-
</p>
|
|
14
|
-
END
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module SeleniumOnRails # :nodoc
|
|
2
|
-
end
|
|
3
|
-
|
|
4
|
-
require 'selenium_on_rails/selenese'
|
|
5
|
-
require 'selenium_on_rails/test_builder'
|
|
6
|
-
require 'selenium_on_rails/rselenese'
|
|
7
|
-
require 'selenium_on_rails/suite_renderer'
|
|
8
|
-
require 'selenium_on_rails/paths'
|
|
9
|
-
require 'selenium_on_rails/fixture_loader'
|
|
10
|
-
require 'selenium_on_rails/partials_support'
|
|
11
|
-
require 'selenium_on_rails/renderer'
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/")
|
|
2
|
-
$: << File.expand_path(File.dirname(__FILE__) + "/../")
|
|
3
|
-
require 'paths'
|
|
4
|
-
require 'net/http'
|
|
5
|
-
require 'tempfile'
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def c(var, default = nil) SeleniumOnRailsConfig.get var, default end
|
|
9
|
-
def c_b(var, default = nil) SeleniumOnRailsConfig.get(var, default) { yield } end
|
|
10
|
-
|
|
11
|
-
BROWSERS = c :browsers, {}
|
|
12
|
-
REUSE_EXISTING_SERVER = c :reuse_existing_server, true
|
|
13
|
-
START_SERVER = c :start_server, false #TODO can't get it to work reliably on Windows, perhaps it's just on my computer, but I leave it off by default for now
|
|
14
|
-
HOST = c :host, 'localhost'
|
|
15
|
-
PORTS = c(:port_start, 3000)..c(:port_end, 3005)
|
|
16
|
-
BASE_URL_PATH = c :base_url_path, '/'
|
|
17
|
-
TEST_RUNNER_URL = c :test_runner_url, '/selenium/TestRunner.html'
|
|
18
|
-
MAX_BROWSER_DURATION = c :max_browser_duration, 2*60
|
|
19
|
-
MULTI_WINDOW = c :multi_window, false
|
|
20
|
-
SERVER_COMMAND = c_b :server_command do
|
|
21
|
-
server_path = File.expand_path(File.dirname(__FILE__) + '/../../../../../script/server')
|
|
22
|
-
if RUBY_PLATFORM =~ /mswin/
|
|
23
|
-
"ruby #{server_path} webrick -p %d -e test > NUL 2>&1"
|
|
24
|
-
else
|
|
25
|
-
# don't use redirects to /dev/nul since it makes the fork return wrong pid
|
|
26
|
-
# see UnixSubProcess
|
|
27
|
-
"#{server_path} webrick -p %d -e test"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
module SeleniumOnRails
|
|
32
|
-
class AcceptanceTestRunner
|
|
33
|
-
include SeleniumOnRails::Paths
|
|
34
|
-
|
|
35
|
-
def run
|
|
36
|
-
raise 'no browser specified, edit/create config.yml' if BROWSERS.empty?
|
|
37
|
-
start_server
|
|
38
|
-
has_error = false
|
|
39
|
-
begin
|
|
40
|
-
BROWSERS.each_pair do |browser, path|
|
|
41
|
-
log_file = start_browser browser, path
|
|
42
|
-
wait_for_completion log_file
|
|
43
|
-
stop_browser
|
|
44
|
-
result = YAML::load_file log_file
|
|
45
|
-
print_result result
|
|
46
|
-
has_error ||= result['numTestFailures'].to_i > 0
|
|
47
|
-
# File.delete log_file unless has_error
|
|
48
|
-
end
|
|
49
|
-
rescue
|
|
50
|
-
stop_server
|
|
51
|
-
raise
|
|
52
|
-
end
|
|
53
|
-
stop_server
|
|
54
|
-
raise 'Test failures' if has_error
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
private
|
|
58
|
-
def start_server
|
|
59
|
-
PORTS.each do |p|
|
|
60
|
-
@port = p
|
|
61
|
-
case server_check
|
|
62
|
-
when :success
|
|
63
|
-
return if REUSE_EXISTING_SERVER
|
|
64
|
-
next
|
|
65
|
-
when Fixnum
|
|
66
|
-
next
|
|
67
|
-
when :no_response
|
|
68
|
-
next unless START_SERVER
|
|
69
|
-
do_start_server
|
|
70
|
-
return
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
raise START_SERVER ? 'failed to start server': 'failed to find existing server, run script/server -e test'
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def do_start_server
|
|
77
|
-
puts 'Starting server'
|
|
78
|
-
@server = start_subprocess(format(SERVER_COMMAND, @port))
|
|
79
|
-
while true
|
|
80
|
-
print '.'
|
|
81
|
-
r = server_check
|
|
82
|
-
if r == :success
|
|
83
|
-
puts
|
|
84
|
-
return
|
|
85
|
-
end
|
|
86
|
-
raise "server returned error: #{r}" if r.instance_of? Fixnum
|
|
87
|
-
sleep 3
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def server_check
|
|
92
|
-
begin
|
|
93
|
-
res = Net::HTTP.get_response HOST, TEST_RUNNER_URL, @port
|
|
94
|
-
return :success if (200..399).include? res.code.to_i
|
|
95
|
-
return res.code.to_i
|
|
96
|
-
rescue Errno::ECONNREFUSED
|
|
97
|
-
return :no_response
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def stop_server
|
|
102
|
-
return unless defined? @server
|
|
103
|
-
puts
|
|
104
|
-
@server.stop 'server'
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def start_browser browser, path
|
|
108
|
-
puts
|
|
109
|
-
puts "Starting #{browser}"
|
|
110
|
-
base_url = "http://#{HOST}:#{@port}#{BASE_URL_PATH}"
|
|
111
|
-
log = log_file browser
|
|
112
|
-
command = "\"#{path}\" \"http://#{HOST}:#{@port}#{TEST_RUNNER_URL}?test=tests&auto=true&baseUrl=#{base_url}&resultsUrl=postResults/#{log}&multiWindow=#{MULTI_WINDOW}\""
|
|
113
|
-
@browser = start_subprocess command
|
|
114
|
-
log_path log
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def stop_browser
|
|
118
|
-
@browser.stop 'browser'
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def start_subprocess command
|
|
122
|
-
if RUBY_PLATFORM =~ /mswin/
|
|
123
|
-
SeleniumOnRails::AcceptanceTestRunner::Win32SubProcess.new command
|
|
124
|
-
elsif RUBY_PLATFORM =~ /darwin/i && command =~ /safari/i
|
|
125
|
-
SeleniumOnRails::AcceptanceTestRunner::SafariSubProcess.new command
|
|
126
|
-
else
|
|
127
|
-
SeleniumOnRails::AcceptanceTestRunner::UnixSubProcess.new command
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def log_file browser
|
|
132
|
-
FileUtils.mkdir_p(log_path(''))
|
|
133
|
-
(0..100).each do |i|
|
|
134
|
-
name = browser + (i==0 ? '' : "(#{i})") + '.yml'
|
|
135
|
-
return name unless File.exist?(log_path(name))
|
|
136
|
-
end
|
|
137
|
-
raise 'there are way too many files in the log directory...'
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def wait_for_completion log_file
|
|
141
|
-
duration = 0
|
|
142
|
-
while true
|
|
143
|
-
raise 'browser takes too long' if duration > MAX_BROWSER_DURATION
|
|
144
|
-
print '.'
|
|
145
|
-
break if File.exist? log_file
|
|
146
|
-
sleep 5
|
|
147
|
-
duration += 5
|
|
148
|
-
end
|
|
149
|
-
puts
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def print_result result
|
|
153
|
-
puts "Finished in #{result['totalTime']} seconds."
|
|
154
|
-
puts
|
|
155
|
-
puts "#{result['numTestPasses']} tests passed, #{result['numTestFailures']} tests failed"
|
|
156
|
-
puts "(Results stored in '#{result['resultDir']}')" if result['resultDir']
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
class SeleniumOnRails::AcceptanceTestRunner::SubProcess
|
|
163
|
-
def stop what
|
|
164
|
-
begin
|
|
165
|
-
puts "Stopping #{what} (pid=#{@pid}) ..."
|
|
166
|
-
Process.kill 9, @pid
|
|
167
|
-
rescue Errno::EPERM #such as the process is already closed (tabbed browser)
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
class SeleniumOnRails::AcceptanceTestRunner::Win32SubProcess < SeleniumOnRails::AcceptanceTestRunner::SubProcess
|
|
173
|
-
def initialize command
|
|
174
|
-
require 'win32/open3' #win32-open3 http://raa.ruby-lang.org/project/win32-open3/
|
|
175
|
-
|
|
176
|
-
puts command
|
|
177
|
-
input, output, error, @pid = Open4.popen4 command, 't', true
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
class SeleniumOnRails::AcceptanceTestRunner::UnixSubProcess < SeleniumOnRails::AcceptanceTestRunner::SubProcess
|
|
182
|
-
def initialize command
|
|
183
|
-
puts command
|
|
184
|
-
@pid = fork do
|
|
185
|
-
# Since we can't use shell redirects without screwing
|
|
186
|
-
# up the pid, we'll reopen stdin and stdout instead
|
|
187
|
-
# to get the same effect.
|
|
188
|
-
[STDOUT,STDERR].each {|f| f.reopen '/dev/null', 'w' }
|
|
189
|
-
exec command
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# The path to Safari should look like this: /Applications/Safari.app/Contents/MacOS/Safari
|
|
195
|
-
class SeleniumOnRails::AcceptanceTestRunner::SafariSubProcess < SeleniumOnRails::AcceptanceTestRunner::UnixSubProcess
|
|
196
|
-
def initialize command
|
|
197
|
-
path = Tempfile.new('selenium-on-rails').path
|
|
198
|
-
f = File.open(path + '.html', 'w')
|
|
199
|
-
f.puts <<-HTML
|
|
200
|
-
<html>
|
|
201
|
-
<head>
|
|
202
|
-
<script type="text/javascript" charset="utf-8">
|
|
203
|
-
window.location.href = #{command.split.last};
|
|
204
|
-
</script>
|
|
205
|
-
</head>
|
|
206
|
-
<body></body>
|
|
207
|
-
</html>
|
|
208
|
-
HTML
|
|
209
|
-
f.close
|
|
210
|
-
|
|
211
|
-
super "#{command.split.first} #{f.path}"
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
end
|
|
215
|
-
|