🎉 Add test mode

This commit is contained in:
Simon Schneegans
2022-03-03 20:00:24 +01:00
parent 59c01999b2
commit 69aadfd643
7 changed files with 43 additions and 10 deletions
+12 -5
View File
@@ -381,11 +381,16 @@ class Extension {
// ----------------------------------------------------------- tweak actor transitions // ----------------------------------------------------------- tweak actor transitions
// If we are currently performing integration test, all animations are set to a fixed
// duration and show a fixed frame from the middle of the animation.
const testMode = this._settings.get_boolean('test-mode');
// The following is used to tweak the ongoing transitions of a window actor. Usually // The following is used to tweak the ongoing transitions of a window actor. Usually
// windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we allow // windows are faded in / out scaled up / down slightly by GNOME Shell. Here, we allow
// modifications to this behavior by the effects. // modifications to this behavior by the effects.
const config = this._currentEffect.tweakTransition(actor, this._settings, forOpening); const config = this._currentEffect.tweakTransition(actor, this._settings, forOpening);
const duration = const duration = testMode ?
5000 :
this._settings.get_int(this._currentEffect.getNick() + '-animation-time'); this._settings.get_int(this._currentEffect.getNick() + '-animation-time');
// All animations are relative to the window's center. // All animations are relative to the window's center.
@@ -416,9 +421,10 @@ class Extension {
// Tweak the transition according to the config object. For some reason, there are // Tweak the transition according to the config object. For some reason, there are
// rare cases, where no transition is set up. This happens from time to time... // rare cases, where no transition is set up. This happens from time to time...
if (transition) { if (transition) {
const middle = (config[property].to + config[property].from) / 2;
transition.set_duration(duration); transition.set_duration(duration);
transition.set_to(config[property].to); transition.set_to(testMode ? middle : config[property].to);
transition.set_from(config[property].from); transition.set_from(testMode ? middle : config[property].from);
transition.set_progress_mode(config[property].mode); transition.set_progress_mode(config[property].mode);
} }
} }
@@ -454,8 +460,9 @@ class Extension {
// Update uniforms at each frame. // Update uniforms at each frame.
transition.connect('new-frame', (t) => { transition.connect('new-frame', (t) => {
shader.set_uniform_value('uProgress', t.get_progress()); shader.set_uniform_value('uProgress', testMode ? 0.5 : t.get_progress());
shader.set_uniform_value('uTime', 0.001 * t.get_elapsed_time()); shader.set_uniform_value(
'uTime', testMode ? duration / 2 : 0.001 * t.get_elapsed_time());
shader.set_uniform_value('uSizeX', actor.width); shader.set_uniform_value('uSizeX', actor.width);
shader.set_uniform_value('uSizeY', actor.height); shader.set_uniform_value('uSizeY', actor.height);
}); });
@@ -25,6 +25,12 @@
<description>The effect with this nick will be used for the next window-open animation.</description> <description>The effect with this nick will be used for the next window-open animation.</description>
</key> </key>
<key name="test-mode" type="b">
<default>false</default>
<summary>Test Mode</summary>
<description>If set to true, all animations will show only one still frame to allow for continuous integration tests.</description>
</key>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Fire Options --> <!-- Fire Options -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+5 -1
View File
@@ -150,6 +150,9 @@ if (utils.isInShellProcess()) {
epicenterY = localY / actor.height; epicenterY = localY / actor.height;
} }
// If we are currently performing integration test, the animation uses a fixed seed.
const testMode = settings.get_boolean('test-mode');
this.set_shader_source(` this.set_shader_source(`
// Inject some common shader snippets. // Inject some common shader snippets.
@@ -157,7 +160,8 @@ if (utils.isInShellProcess()) {
uniform sampler2D uShardTexture; uniform sampler2D uShardTexture;
const vec2 SEED = vec2(${Math.random()}, ${Math.random()}); const vec2 SEED = vec2(${testMode ? 0 : Math.random()},
${testMode ? 0 : Math.random()});
const float SHARD_SCALE = ${settings.get_double('broken-glass-scale')}; const float SHARD_SCALE = ${settings.get_double('broken-glass-scale')};
const float SHARD_LAYERS = 5; const float SHARD_LAYERS = 5;
const float BLOW_FORCE = ${settings.get_double('broken-glass-blow-force')}; const float BLOW_FORCE = ${settings.get_double('broken-glass-blow-force')};
+5 -1
View File
@@ -117,6 +117,9 @@ if (utils.isInShellProcess()) {
const color = Clutter.Color.from_string(settings.get_string('energize-a-color'))[1]; const color = Clutter.Color.from_string(settings.get_string('energize-a-color'))[1];
// If we are currently performing integration test, the animation uses a fixed seed.
const testMode = settings.get_boolean('test-mode');
this.set_shader_source(` this.set_shader_source(`
// Inject some common shader snippets. // Inject some common shader snippets.
@@ -124,7 +127,8 @@ if (utils.isInShellProcess()) {
${shaderSnippets.noise()} ${shaderSnippets.noise()}
${shaderSnippets.edgeMask()} ${shaderSnippets.edgeMask()}
const vec2 SEED = vec2(${Math.random()}, ${Math.random()}); const vec2 SEED = vec2(${testMode ? 0 : Math.random()},
${testMode ? 0 : Math.random()});
const float FADE_IN_TIME = 0.3; const float FADE_IN_TIME = 0.3;
const float FADE_OUT_TIME = 0.6; const float FADE_OUT_TIME = 0.6;
const float HEART_FADE_TIME = 0.3; const float HEART_FADE_TIME = 0.3;
+5 -1
View File
@@ -117,6 +117,9 @@ if (utils.isInShellProcess()) {
const color = Clutter.Color.from_string(settings.get_string('energize-b-color'))[1]; const color = Clutter.Color.from_string(settings.get_string('energize-b-color'))[1];
// If we are currently performing integration test, the animation uses a fixed seed.
const testMode = settings.get_boolean('test-mode');
this.set_shader_source(` this.set_shader_source(`
// Inject some common shader snippets. // Inject some common shader snippets.
@@ -124,7 +127,8 @@ if (utils.isInShellProcess()) {
${shaderSnippets.noise()} ${shaderSnippets.noise()}
${shaderSnippets.edgeMask()} ${shaderSnippets.edgeMask()}
const vec2 SEED = vec2(${Math.random()}, ${Math.random()}); const vec2 SEED = vec2(${testMode ? 0 : Math.random()},
${testMode ? 0 : Math.random()});
const float SHOWER_TIME = 0.3; const float SHOWER_TIME = 0.3;
const float SHOWER_WIDTH = 0.3; const float SHOWER_WIDTH = 0.3;
const float STREAK_TIME = 0.6; const float STREAK_TIME = 0.6;
+5 -1
View File
@@ -132,6 +132,9 @@ if (utils.isInShellProcess()) {
const color = const color =
Clutter.Color.from_string(settings.get_string('claw-scratch-color'))[1]; Clutter.Color.from_string(settings.get_string('claw-scratch-color'))[1];
// If we are currently performing integration test, the animation uses a fixed seed.
const testMode = settings.get_boolean('test-mode');
this.set_shader_source(` this.set_shader_source(`
// Inject some common shader snippets. // Inject some common shader snippets.
@@ -141,7 +144,8 @@ if (utils.isInShellProcess()) {
// See assets/README.md for how this texture was created. // See assets/README.md for how this texture was created.
uniform sampler2D uClawTexture; uniform sampler2D uClawTexture;
const vec2 SEED = vec2(${Math.random()}, ${Math.random()}); const vec2 SEED = vec2(${testMode ? 0 : Math.random()},
${testMode ? 0 : Math.random()});
const float CLAW_SIZE = ${settings.get_double('claw-scratch-scale')}; const float CLAW_SIZE = ${settings.get_double('claw-scratch-scale')};
const float NUM_CLAWS = ${settings.get_int('claw-scratch-count')}; const float NUM_CLAWS = ${settings.get_int('claw-scratch-count')};
const float WARP_INTENSITY = 1.0 + ${settings.get_double('claw-scratch-warp')}; const float WARP_INTENSITY = 1.0 + ${settings.get_double('claw-scratch-warp')};
+5 -1
View File
@@ -118,6 +118,9 @@ if (utils.isInShellProcess()) {
const color = Clutter.Color.from_string(settings.get_string('wisps-color'))[1]; const color = Clutter.Color.from_string(settings.get_string('wisps-color'))[1];
// If we are currently performing integration test, the animation uses a fixed seed.
const testMode = settings.get_boolean('test-mode');
this.set_shader_source(` this.set_shader_source(`
// Inject some common shader snippets. // Inject some common shader snippets.
@@ -125,7 +128,8 @@ if (utils.isInShellProcess()) {
${shaderSnippets.noise()} ${shaderSnippets.noise()}
${shaderSnippets.edgeMask()} ${shaderSnippets.edgeMask()}
const vec2 SEED = vec2(${Math.random()}, ${Math.random()}); const vec2 SEED = vec2(${testMode ? 0 : Math.random()},
${testMode ? 0 : Math.random()});
const float WISPS_RADIUS = 20.0; const float WISPS_RADIUS = 20.0;
const float WISPS_SPEED = 10.0; const float WISPS_SPEED = 10.0;
const float WISPS_SPACING = 40 + WISPS_RADIUS; const float WISPS_SPACING = 40 + WISPS_RADIUS;