浏览代码

Puppeteer E2E test: Regenerate high-differenсe screenshots and decrease threshold (#25403)

* Puppeteer: Regenerate high-differene screenshots

* Update exceptions

* Fix
Levi Pesin 2 年之前
父节点
当前提交
780feac0f3
共有 63 个文件被更改,包括 22 次插入7 次删除
  1. 二进制
      examples/screenshots/css3d_periodictable.jpg
  2. 二进制
      examples/screenshots/misc_boxselection.jpg
  3. 二进制
      examples/screenshots/misc_controls_pointerlock.jpg
  4. 二进制
      examples/screenshots/misc_uv_tests.jpg
  5. 二进制
      examples/screenshots/webgl2_multisampled_renderbuffers.jpg
  6. 二进制
      examples/screenshots/webgl2_ubo.jpg
  7. 二进制
      examples/screenshots/webgl_animation_skinning_blending.jpg
  8. 二进制
      examples/screenshots/webgl_buffergeometry_compression.jpg
  9. 二进制
      examples/screenshots/webgl_buffergeometry_drawrange.jpg
  10. 二进制
      examples/screenshots/webgl_camera.jpg
  11. 二进制
      examples/screenshots/webgl_camera_logarithmicdepthbuffer.jpg
  12. 二进制
      examples/screenshots/webgl_clipping_advanced.jpg
  13. 二进制
      examples/screenshots/webgl_custom_attributes_lines.jpg
  14. 二进制
      examples/screenshots/webgl_custom_attributes_points2.jpg
  15. 二进制
      examples/screenshots/webgl_custom_attributes_points3.jpg
  16. 二进制
      examples/screenshots/webgl_framebuffer_texture.jpg
  17. 二进制
      examples/screenshots/webgl_geometry_extrude_splines.jpg
  18. 二进制
      examples/screenshots/webgl_gpgpu_birds_gltf.jpg
  19. 二进制
      examples/screenshots/webgl_gpgpu_protoplanet.jpg
  20. 二进制
      examples/screenshots/webgl_helpers.jpg
  21. 二进制
      examples/screenshots/webgl_interactive_raycasting_points.jpg
  22. 二进制
      examples/screenshots/webgl_lightningstrike.jpg
  23. 二进制
      examples/screenshots/webgl_lights_pointlights.jpg
  24. 二进制
      examples/screenshots/webgl_lights_spotlights.jpg
  25. 二进制
      examples/screenshots/webgl_loader_collada_kinematics.jpg
  26. 二进制
      examples/screenshots/webgl_loader_gcode.jpg
  27. 二进制
      examples/screenshots/webgl_loader_gltf_transmission.jpg
  28. 二进制
      examples/screenshots/webgl_loader_ldraw.jpg
  29. 二进制
      examples/screenshots/webgl_loader_md2.jpg
  30. 二进制
      examples/screenshots/webgl_loader_mmd_audio.jpg
  31. 二进制
      examples/screenshots/webgl_loader_mmd_pose.jpg
  32. 二进制
      examples/screenshots/webgl_loader_pcd.jpg
  33. 二进制
      examples/screenshots/webgl_loader_pdb.jpg
  34. 二进制
      examples/screenshots/webgl_loader_svg.jpg
  35. 二进制
      examples/screenshots/webgl_loader_tilt.jpg
  36. 二进制
      examples/screenshots/webgl_lod.jpg
  37. 二进制
      examples/screenshots/webgl_marchingcubes.jpg
  38. 二进制
      examples/screenshots/webgl_materials_blending.jpg
  39. 二进制
      examples/screenshots/webgl_materials_blending_custom.jpg
  40. 二进制
      examples/screenshots/webgl_materials_variations_lambert.jpg
  41. 二进制
      examples/screenshots/webgl_materials_variations_phong.jpg
  42. 二进制
      examples/screenshots/webgl_materials_variations_physical.jpg
  43. 二进制
      examples/screenshots/webgl_materials_variations_standard.jpg
  44. 二进制
      examples/screenshots/webgl_materials_variations_toon.jpg
  45. 二进制
      examples/screenshots/webgl_materials_wireframe.jpg
  46. 二进制
      examples/screenshots/webgl_multiple_canvases_circle.jpg
  47. 二进制
      examples/screenshots/webgl_multiple_elements_text.jpg
  48. 二进制
      examples/screenshots/webgl_nodes_loader_materialx.jpg
  49. 二进制
      examples/screenshots/webgl_nodes_materials_instance_uniform.jpg
  50. 二进制
      examples/screenshots/webgl_nodes_playground.jpg
  51. 二进制
      examples/screenshots/webgl_points_dynamic.jpg
  52. 二进制
      examples/screenshots/webgl_postprocessing_advanced.jpg
  53. 二进制
      examples/screenshots/webgl_postprocessing_fxaa.jpg
  54. 二进制
      examples/screenshots/webgl_postprocessing_pixel.jpg
  55. 二进制
      examples/screenshots/webgl_postprocessing_ssr.jpg
  56. 二进制
      examples/screenshots/webgl_raycaster_bvh.jpg
  57. 二进制
      examples/screenshots/webgl_shaders_tonemapping.jpg
  58. 二进制
      examples/screenshots/webgl_shadowmap_performance.jpg
  59. 二进制
      examples/screenshots/webgpu_nodes_playground.jpg
  60. 二进制
      examples/screenshots/webxr_vr_layers.jpg
  61. 二进制
      examples/screenshots/webxr_vr_sandbox.jpg
  62. 二进制
      examples/screenshots/webxr_vr_video.jpg
  63. 22 7
      test/e2e/puppeteer.js

二进制
examples/screenshots/css3d_periodictable.jpg


二进制
examples/screenshots/misc_boxselection.jpg


二进制
examples/screenshots/misc_controls_pointerlock.jpg


二进制
examples/screenshots/misc_uv_tests.jpg


二进制
examples/screenshots/webgl2_multisampled_renderbuffers.jpg


二进制
examples/screenshots/webgl2_ubo.jpg


二进制
examples/screenshots/webgl_animation_skinning_blending.jpg


二进制
examples/screenshots/webgl_buffergeometry_compression.jpg


二进制
examples/screenshots/webgl_buffergeometry_drawrange.jpg


二进制
examples/screenshots/webgl_camera.jpg


二进制
examples/screenshots/webgl_camera_logarithmicdepthbuffer.jpg


二进制
examples/screenshots/webgl_clipping_advanced.jpg


二进制
examples/screenshots/webgl_custom_attributes_lines.jpg


二进制
examples/screenshots/webgl_custom_attributes_points2.jpg


二进制
examples/screenshots/webgl_custom_attributes_points3.jpg


二进制
examples/screenshots/webgl_framebuffer_texture.jpg


二进制
examples/screenshots/webgl_geometry_extrude_splines.jpg


二进制
examples/screenshots/webgl_gpgpu_birds_gltf.jpg


二进制
examples/screenshots/webgl_gpgpu_protoplanet.jpg


二进制
examples/screenshots/webgl_helpers.jpg


二进制
examples/screenshots/webgl_interactive_raycasting_points.jpg


二进制
examples/screenshots/webgl_lightningstrike.jpg


二进制
examples/screenshots/webgl_lights_pointlights.jpg


二进制
examples/screenshots/webgl_lights_spotlights.jpg


二进制
examples/screenshots/webgl_loader_collada_kinematics.jpg


二进制
examples/screenshots/webgl_loader_gcode.jpg


二进制
examples/screenshots/webgl_loader_gltf_transmission.jpg


二进制
examples/screenshots/webgl_loader_ldraw.jpg


二进制
examples/screenshots/webgl_loader_md2.jpg


二进制
examples/screenshots/webgl_loader_mmd_audio.jpg


二进制
examples/screenshots/webgl_loader_mmd_pose.jpg


二进制
examples/screenshots/webgl_loader_pcd.jpg


二进制
examples/screenshots/webgl_loader_pdb.jpg


二进制
examples/screenshots/webgl_loader_svg.jpg


二进制
examples/screenshots/webgl_loader_tilt.jpg


二进制
examples/screenshots/webgl_lod.jpg


二进制
examples/screenshots/webgl_marchingcubes.jpg


二进制
examples/screenshots/webgl_materials_blending.jpg


二进制
examples/screenshots/webgl_materials_blending_custom.jpg


二进制
examples/screenshots/webgl_materials_variations_lambert.jpg


二进制
examples/screenshots/webgl_materials_variations_phong.jpg


二进制
examples/screenshots/webgl_materials_variations_physical.jpg


二进制
examples/screenshots/webgl_materials_variations_standard.jpg


二进制
examples/screenshots/webgl_materials_variations_toon.jpg


二进制
examples/screenshots/webgl_materials_wireframe.jpg


二进制
examples/screenshots/webgl_multiple_canvases_circle.jpg


二进制
examples/screenshots/webgl_multiple_elements_text.jpg


二进制
examples/screenshots/webgl_nodes_loader_materialx.jpg


二进制
examples/screenshots/webgl_nodes_materials_instance_uniform.jpg


二进制
examples/screenshots/webgl_nodes_playground.jpg


二进制
examples/screenshots/webgl_points_dynamic.jpg


二进制
examples/screenshots/webgl_postprocessing_advanced.jpg


二进制
examples/screenshots/webgl_postprocessing_fxaa.jpg


二进制
examples/screenshots/webgl_postprocessing_pixel.jpg


二进制
examples/screenshots/webgl_postprocessing_ssr.jpg


二进制
examples/screenshots/webgl_raycaster_bvh.jpg


二进制
examples/screenshots/webgl_shaders_tonemapping.jpg


二进制
examples/screenshots/webgl_shadowmap_performance.jpg


二进制
examples/screenshots/webgpu_nodes_playground.jpg


二进制
examples/screenshots/webxr_vr_layers.jpg


二进制
examples/screenshots/webxr_vr_sandbox.jpg


二进制
examples/screenshots/webxr_vr_video.jpg


+ 22 - 7
test/e2e/puppeteer.js

@@ -18,21 +18,38 @@ const exceptionList = [
 	'css3d_youtube',
 	'css3d_youtube',
 	'webgl_video_kinect',
 	'webgl_video_kinect',
 	'webgl_video_panorama_equirectangular',
 	'webgl_video_panorama_equirectangular',
+	'webxr_vr_video',
 
 
 	'webaudio_visualizer', // audio can't be analyzed without proper audio hook
 	'webaudio_visualizer', // audio can't be analyzed without proper audio hook
 
 
-	'webgl_effects_ascii', // blink renders text differently in every platform
-
 	'webxr_ar_lighting', // webxr
 	'webxr_ar_lighting', // webxr
 
 
 	'webgl_worker_offscreencanvas', // in a worker, not robust
 	'webgl_worker_offscreencanvas', // in a worker, not robust
 
 
+	// Windows-Linux text rendering differences
+	// TODO: Fix these by setting a font in Puppeteer -- this can also fix a bunch of 0.1%-0.2% examples
+	'css3d_periodictable',
+	'misc_controls_pointerlock',
+	'misc_uv_tests',
+	'webgl_camera_logarithmicdepthbuffer',
+	'webgl_effects_ascii',
+	'webgl_loader_pdb',
+	'webgl_multiple_canvases_circle',
+	'webgl_multiple_elements_text',
+	'webgl_nodes_playground',
+	'webgl_shaders_tonemapping',
+	'webgpu_nodes_playground',
+
+	// Unknown
 	// TODO: most of these can be fixed just by increasing idleTime and parseTime
 	// TODO: most of these can be fixed just by increasing idleTime and parseTime
+	'webgl_clipping_advanced',
 	'webgl_lensflares',
 	'webgl_lensflares',
 	'webgl_lines_sphere',
 	'webgl_lines_sphere',
+	'webgl_lights_spotlights',
 	'webgl_loader_imagebitmap',
 	'webgl_loader_imagebitmap',
 	'webgl_loader_texture_lottie',
 	'webgl_loader_texture_lottie',
 	'webgl_loader_texture_pvrtc',
 	'webgl_loader_texture_pvrtc',
+	'webgl_materials_blending',
 	'webgl_morphtargets_face',
 	'webgl_morphtargets_face',
 	'webgl_nodes_materials_standard',
 	'webgl_nodes_materials_standard',
 	'webgl_postprocessing_crossfade',
 	'webgl_postprocessing_crossfade',
@@ -59,7 +76,7 @@ const chromiumChannel = 'stable'; // stable -> beta -> dev -> canary (Mac and Wi
 
 
 const port = 1234;
 const port = 1234;
 const pixelThreshold = 0.1; // threshold error in one pixel
 const pixelThreshold = 0.1; // threshold error in one pixel
-const maxDifferentPixels = 0.05; // at most 5% different pixels
+const maxDifferentPixels = 0.3; // at most 0.3% different pixels
 
 
 const networkTimeout = 90; // 90 seconds, set to 0 to disable
 const networkTimeout = 90; // 90 seconds, set to 0 to disable
 const renderTimeout = 4.5; // 4.5 seconds, set to 0 to disable
 const renderTimeout = 4.5; // 4.5 seconds, set to 0 to disable
@@ -464,13 +481,11 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot
 
 
 			}
 			}
 
 
-			numDifferentPixels /= actual.width * actual.height;
-
 			/* Print results */
 			/* Print results */
 
 
-			const differentPixels = 100 * numDifferentPixels;
+			const differentPixels = numDifferentPixels / ( actual.width * actual.height ) * 100;
 
 
-			if ( numDifferentPixels < maxDifferentPixels ) {
+			if ( differentPixels < maxDifferentPixels ) {
 
 
 				console.green( `Diff ${ differentPixels.toFixed( 1 ) }% in file: ${ file }` );
 				console.green( `Diff ${ differentPixels.toFixed( 1 ) }% in file: ${ file }` );