blob: 9825f605e883bfe721dc1e7eb8141e8c75fa3589 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {assert} from 'chai';
import type * as SDK from '../../core/sdk/sdk.js';
import * as Protocol from '../../generated/protocol.js';
import {setupLocaleHooks} from '../../testing/LocaleHelpers.js';
import {MockIssuesModel} from '../../testing/MockIssuesModel.js';
import * as IssuesManager from '../issues_manager/issues_manager.js';
describe('LazyLoadImageIssue', () => {
setupLocaleHooks();
const mockModel = new MockIssuesModel([]) as unknown as SDK.IssuesModel.IssuesModel;
function createProtocolIssueWithoutDetails(): Protocol.Audits.InspectorIssue {
return {
code: Protocol.Audits.InspectorIssueCode.LazyLoadImageIssue,
details: {},
};
}
function createProtocolIssueWithDetails(lazyLoadImageIssueDetails: Protocol.Audits.LazyLoadImageIssueDetails):
Protocol.Audits.InspectorIssue {
return {
code: Protocol.Audits.InspectorIssueCode.LazyLoadImageIssue,
details: {lazyLoadImageIssueDetails},
};
}
it('creates a lazy load image issue with valid details', () => {
const issueDetails = {
nodeId: 42 as Protocol.DOM.BackendNodeId,
url: 'https://example.com/image.jpg',
frameId: 'main' as Protocol.Page.FrameId,
};
const issue = createProtocolIssueWithDetails(issueDetails);
const issues = IssuesManager.LazyLoadImageIssue.LazyLoadImageIssue.fromInspectorIssue(mockModel, issue);
assert.lengthOf(issues, 1);
const lazyIssue = issues[0];
assert.strictEqual(lazyIssue.getCategory(), IssuesManager.Issue.IssueCategory.OTHER);
assert.strictEqual(lazyIssue.primaryKey(), `LazyLoadImageIssue-(42)-(https://example.com/image.jpg)`);
assert.strictEqual(lazyIssue.getKind(), IssuesManager.Issue.IssueKind.IMPROVEMENT);
assert.isNotNull(lazyIssue.getDescription());
});
it('returns empty array without details', () => {
const inspectorIssueWithoutDetails = createProtocolIssueWithoutDetails();
const issues =
IssuesManager.LazyLoadImageIssue.LazyLoadImageIssue.fromInspectorIssue(mockModel, inspectorIssueWithoutDetails);
assert.isEmpty(issues);
});
});