summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb')
-rw-r--r--www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb b/www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb
new file mode 100644
index 00000000..0923e354
--- /dev/null
+++ b/www/wiki/extensions/MultimediaViewer/tests/browser/features/support/pages/commons_page.rb
@@ -0,0 +1,51 @@
+require 'json'
+
+class CommonsPage
+ include PageObject
+
+ page_url 'File:Sunrise_over_fishing_boats_in_Kerala.jpg'
+
+ img(:commons_image, src: /Kerala\.jpg$/)
+ div(:mmv_image_loaded_cucumber, class: 'mw-mmv-image-loaded-cucumber')
+
+ def wait_for_image_load(selector)
+ browser.execute_script <<-end_script
+ function wait_for_image() {
+ var $img = $( #{selector.to_json} );
+ if ( $img.length
+ && $img.attr( 'src' ).match(/Kerala/)
+ && !$img.attr( 'src' ).match(/\\/220px-/) // Blurry placeholder
+ && $img.prop( 'complete' ) ) {
+ $( 'body' ).append( '<div class=\"mw-mmv-image-loaded-cucumber\"/>' );
+ } else {
+ setTimeout( wait_for_image, 10 );
+ }
+ }
+ wait_for_image();
+ end_script
+
+ wait_until { mmv_image_loaded_cucumber_element.exists? }
+ end
+
+ def log_performance(stats)
+ stats = stats.reject { |_name, value| value.nil? || value.to_s.empty? }
+ stats[:duration] = stats[:duration].floor
+
+ browser.execute_script <<-end_script
+ mediaWiki.eventLog.declareSchema( 'MultimediaViewerVersusPageFilePerformance',
+ { schema:
+ { title: 'MultimediaViewerVersusPageFilePerformance',
+ properties: {
+ type: { type: 'string', required: true, enum: [ 'mmv', 'file-page' ] },
+ duration: { type: 'integer', required: true },
+ cache: { type: 'string', required: false, enum: [ 'cold', 'warm' ] },
+ windowSize: { type: 'string', required: false, enum: [ 'average', 'large'] }
+ }
+ },
+ revision: 7907636
+ });
+
+ mw.eventLog.logEvent( 'MultimediaViewerVersusPageFilePerformance', #{stats.to_json} );
+ end_script
+ end
+end