From 446645e42ef4a2eea494c1947f6a5b0067a7f58f Mon Sep 17 00:00:00 2001 From: aashu2006 Date: Mon, 2 Feb 2026 13:48:09 +0530 Subject: [PATCH] Add visual regression tests for WebGL 3D primitives --- test/unit/visual/cases/webgl.js | 70 ++++++++++++++++++ .../cone() renders correctly/000.png | Bin 0 -> 3249 bytes .../cone() renders correctly/metadata.json | 3 + .../cylinder() renders correctly/000.png | Bin 0 -> 2177 bytes .../metadata.json | 3 + .../000.png | Bin 0 -> 3841 bytes .../metadata.json | 3 + .../torus() renders correctly/000.png | Bin 0 -> 5193 bytes .../torus() renders correctly/metadata.json | 3 + 9 files changed, 82 insertions(+) create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/000.png create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/metadata.json create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/cylinder() renders correctly/000.png create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/cylinder() renders correctly/metadata.json create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/ellipsoid() renders with non-uniform radii/000.png create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/ellipsoid() renders with non-uniform radii/metadata.json create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/000.png create mode 100644 test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/metadata.json diff --git a/test/unit/visual/cases/webgl.js b/test/unit/visual/cases/webgl.js index 1b644a27a0..74287f34e1 100644 --- a/test/unit/visual/cases/webgl.js +++ b/test/unit/visual/cases/webgl.js @@ -1242,4 +1242,74 @@ visualSuite('WebGL', function() { screenshot(); }); }); + + visualSuite('3D Primitives', function() { + visualTest('cylinder() renders correctly', function(p5, screenshot) { + p5.createCanvas(100, 100, p5.WEBGL); + p5.background(255); + + p5.ambientLight(100); + p5.directionalLight(255, 255, 255, 0, 0, -1); + + p5.noStroke(); + p5.fill(200); + + p5.rotateX(p5.PI / 6); + p5.rotateY(p5.PI / 4); + + p5.cylinder(30, 60); + screenshot(); + }); + + visualTest('cone() renders correctly', function(p5, screenshot) { + p5.createCanvas(100, 100, p5.WEBGL); + p5.background(255); + + p5.ambientLight(100); + p5.directionalLight(255, 255, 255, 0, 0, -1); + + p5.noStroke(); + p5.fill(200); + + p5.rotateX(p5.PI / 6); + p5.rotateY(p5.PI / 4); + + p5.cone(30, 60); + screenshot(); + }); + + visualTest('ellipsoid() renders with non-uniform radii', function(p5, screenshot) { + p5.createCanvas(100, 100, p5.WEBGL); + p5.background(255); + + p5.ambientLight(100); + p5.directionalLight(255, 255, 255, 0, 0, -1); + + p5.noStroke(); + p5.fill(200); + + p5.rotateX(p5.PI / 6); + p5.rotateY(p5.PI / 4); + + p5.ellipsoid(20, 30, 40); + screenshot(); + }); + + visualTest('torus() renders correctly', function(p5, screenshot) { + p5.createCanvas(100, 100, p5.WEBGL); + p5.background(255); + + p5.ambientLight(100); + p5.directionalLight(255, 255, 255, 0, 0, -1); + + p5.noStroke(); + p5.fill(200); + + p5.rotateX(p5.PI / 6); + p5.rotateY(p5.PI / 4); + + p5.torus(30, 10); + screenshot(); + }); + }); }); diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/000.png b/test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/000.png new file mode 100644 index 0000000000000000000000000000000000000000..31cb0582470cd544b2f6438e31069498dee2db4f GIT binary patch literal 3249 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 literal 0 HcmV?d00001 diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/metadata.json b/test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/metadata.json new file mode 100644 index 0000000000..2d4bfe30da --- /dev/null +++ b/test/unit/visual/screenshots/WebGL/3D Primitives/cone() renders correctly/metadata.json @@ -0,0 +1,3 @@ +{ + "numScreenshots": 1 +} \ No newline at end of file diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/cylinder() renders correctly/000.png b/test/unit/visual/screenshots/WebGL/3D Primitives/cylinder() renders correctly/000.png new file mode 100644 index 0000000000000000000000000000000000000000..be5edeec06085e02970b3203c50a0fb771fdb6fd GIT binary patch literal 2177 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 R?Zn#w%uTIKo*KEu{tpYI4{-nh literal 0 HcmV?d00001 diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/ellipsoid() renders with non-uniform radii/metadata.json b/test/unit/visual/screenshots/WebGL/3D Primitives/ellipsoid() renders with non-uniform radii/metadata.json new file mode 100644 index 0000000000..2d4bfe30da --- /dev/null +++ b/test/unit/visual/screenshots/WebGL/3D Primitives/ellipsoid() renders with non-uniform radii/metadata.json @@ -0,0 +1,3 @@ +{ + "numScreenshots": 1 +} \ No newline at end of file diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/000.png b/test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/000.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8c2db3bc032bd277967b67308c6878c7d5d972 GIT binary patch literal 5193 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 D#RHug literal 0 HcmV?d00001 diff --git a/test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/metadata.json b/test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/metadata.json new file mode 100644 index 0000000000..2d4bfe30da --- /dev/null +++ b/test/unit/visual/screenshots/WebGL/3D Primitives/torus() renders correctly/metadata.json @@ -0,0 +1,3 @@ +{ + "numScreenshots": 1 +} \ No newline at end of file