Skip to content

Commit 0aea023

Browse files
committed
Addresing feedback, remove unnecassary code, remove setTimeout and Task.Delay from tests
1 parent 5d42392 commit 0aea023

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

src/Components/Web.JS/src/Rendering/BinaryImageComponent.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ export class BinaryImageComponent {
7373

7474
observer.observe(parent, {
7575
childList: true,
76-
subtree: true,
7776
attributes: true,
7877
attributeFilter: ['src'],
7978
});
@@ -292,15 +291,13 @@ export class BinaryImageComponent {
292291
BinaryImageComponent.loadingImages.delete(imgElement);
293292
imgElement.style.removeProperty('--blazor-image-progress');
294293
}
295-
imgElement.removeEventListener('error', onError);
296294
};
297295

298296
const onError = (_e: Event) => {
299297
if (!cacheKey || BinaryImageComponent.activeCacheKey.get(imgElement) === cacheKey) {
300298
BinaryImageComponent.loadingImages.delete(imgElement);
301299
imgElement.style.removeProperty('--blazor-image-progress');
302300
}
303-
imgElement.removeEventListener('load', onLoad);
304301
};
305302

306303
imgElement.addEventListener('load', onLoad, { once: true });

src/Components/test/E2ETest/Tests/ImageTest.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,22 @@ public void ImageRenders_WithCorrectDimensions()
166166
[Fact]
167167
public void Image_CompletesLoad_AfterArtificialDelay()
168168
{
169-
// Patch setImageAsync to introduce a delay before delegating to original
170169
((IJavaScriptExecutor)Browser).ExecuteScript(@"
171170
(function(){
172171
const root = Blazor && Blazor._internal && Blazor._internal.BinaryImageComponent;
173172
if (!root) return;
174173
if (!window.__origSetImageAsync) {
175174
window.__origSetImageAsync = root.setImageAsync;
176175
root.setImageAsync = async function(...args){
177-
await new Promise(r => setTimeout(r, 500));
176+
const getResolvers = () => {
177+
if (Promise.fromResolvers) return Promise.fromResolvers();
178+
let resolve, reject;
179+
const promise = new Promise((r,j)=>{ resolve=r; reject=j; });
180+
return { promise, resolve, reject };
181+
};
182+
const resolvers = getResolvers();
183+
window.__imagePromiseResolvers = resolvers;
184+
await resolvers.promise;
178185
return window.__origSetImageAsync.apply(this, args);
179186
};
180187
}
@@ -183,21 +190,25 @@ public void Image_CompletesLoad_AfterArtificialDelay()
183190
Browser.FindElement(By.Id("load-png")).Click();
184191

185192
var imageElement = Browser.FindElement(By.Id("png-basic"));
186-
Browser.True(() =>
187-
{
193+
Assert.NotNull(imageElement);
194+
195+
((IJavaScriptExecutor)Browser).ExecuteScript("if (window.__imagePromiseResolvers) { window.__imagePromiseResolvers.resolve(); }");
196+
197+
Browser.True(() => {
188198
var src = imageElement.GetAttribute("src");
189199
return !string.IsNullOrEmpty(src) && src.StartsWith("blob:", StringComparison.Ordinal);
190200
});
191201
Browser.Equal("PNG basic loaded", () => Browser.FindElement(By.Id("current-status")).Text);
192202

193-
// Restore
203+
// Restore original function and clean up instrumentation
194204
((IJavaScriptExecutor)Browser).ExecuteScript(@"
195205
(function(){
196206
const root = Blazor && Blazor._internal && Blazor._internal.BinaryImageComponent;
197207
if (root && window.__origSetImageAsync) {
198208
root.setImageAsync = window.__origSetImageAsync;
199209
delete window.__origSetImageAsync;
200210
}
211+
delete window.__imagePromiseResolvers;
201212
})();");
202213
}
203214

src/Components/test/testassets/BasicTestApp/ImageTest/ImageTestComponent.razor

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,17 @@
113113
_currentStatus = "Component initialized";
114114
}
115115

116-
private async Task LoadJpgFromStream()
116+
private void LoadJpgFromStream()
117117
{
118118
_currentStatus = "Loading JPG from stream...";
119119
var stream = new MemoryStream(TestJpgData);
120120
_jpgStreamSource = new ImageSource(stream, "image/jpeg", "test-jpg-stream");
121-
await Task.Delay(10);
122121
_jpgStream = true;
123122
_currentStatus = "JPG from stream loaded";
124123

125124
}
126125

127-
private async Task ChangeDynamicImageSource()
126+
private void ChangeDynamicImageSource()
128127
{
129128
if (!_dynamicSource)
130129
{
@@ -133,7 +132,6 @@
133132
_dynamicImageSource = new ImageSource(TestPngData, "image/png", "dynamic-png");
134133
_dynamicSource = true;
135134
_isCurrentlyShowingPng = true;
136-
await Task.Delay(10);
137135
_currentStatus = "Dynamic source initialized with PNG";
138136
}
139137
else
@@ -144,37 +142,32 @@
144142
_currentStatus = "Changing to JPG...";
145143
_dynamicImageSource = new ImageSource(TestJpgData, "image/jpeg", "dynamic-jpg");
146144
_isCurrentlyShowingPng = false;
147-
await Task.Delay(10);
148145
_currentStatus = "Dynamic source changed to JPG";
149146
}
150147
else
151148
{
152149
_currentStatus = "Changing to PNG...";
153150
_dynamicImageSource = new ImageSource(TestPngData, "image/png", "dynamic-png");
154151
_isCurrentlyShowingPng = true;
155-
await Task.Delay(10);
156152
_currentStatus = "Dynamic source changed to PNG";
157153
}
158154
}
159155
}
160-
private async Task LoadPairSequence()
156+
private void LoadPairSequence()
161157
{
162158
_currentStatus = "Loading pair sequence...";
163159
_pairSource = new ImageSource(TestJpgData, "image/jpeg", "pair-cache");
164160
_pair1Visible = true;
165-
await Task.Delay(50);
166161
_pair2Visible = true;
167-
await Task.Delay(10);
168162
_currentStatus = "Pair second loaded";
169163
}
170164

171-
private async Task ReloadPng()
165+
private void ReloadPng()
172166
{
173167
if (_pngBasic)
174168
{
175169
_currentStatus = "Reloading PNG...";
176170
_pngBasic = false;
177-
await Task.Delay(10);
178171
}
179172
else
180173
{
@@ -183,28 +176,25 @@
183176

184177
_basicImageSource = new ImageSource(TestPngData, "image/png", "test-png-basic");
185178
_pngBasic = true;
186-
await Task.Delay(10);
187179
_currentStatus = "PNG basic loaded";
188180
}
189181

190-
private async Task LoadErrorImage()
182+
private void LoadErrorImage()
191183
{
192184
_currentStatus = "Loading error image...";
193185
// Create a stream then seek to end so component throws when validating position
194186
var ms = new MemoryStream(new byte[] { 1, 2, 3, 4 });
195187
ms.Seek(ms.Length, SeekOrigin.Begin);
196188
_errorSource = new ImageSource(ms, "image/png", "error-key");
197189
_errorImage = true;
198-
await Task.Delay(10);
199190
_currentStatus = "Error image loaded";
200191
}
201192

202-
private async Task LoadCachedJpg()
193+
private void LoadCachedJpg()
203194
{
204195
_currentStatus = "Loading cached JPG...";
205196
_cachedJpgSource = new ImageSource(TestJpgData, "image/jpeg", "single-cached-jpg");
206197
_cachedJpgVisible = true;
207-
await Task.Delay(10);
208198
_currentStatus = "Cached JPG loaded";
209199
}
210200

0 commit comments

Comments
 (0)