chrome-devtools-frontend
Version:
Chrome DevTools UI
81 lines (77 loc) • 2.6 kB
text/typescript
// Copyright 2025 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import rule from '../lib/no-lit-render-outside-of-view.ts';
import {RuleTester} from './utils/RuleTester.ts';
new RuleTester().run('no-lit-render-outside-of-view', rule, {
valid: [
{
code: `const DEFAULT_VIEW = (input, output, target) => {
render(html\`<div>Hello world</div>\`, target, {host: input});
}`,
filename: 'front_end/components/test.ts',
},
{
code: `function defaultView(viewInput, viewOutput, target) {
render(html\`<div>Hello world</div>\`, target, {host: viewInput});
}`,
filename: 'front_end/panels/recorder/test.ts',
},
{
code: `class SomeWidget extends UI.Widget.Widget {
constructor(view = (input, _output, target) => {
render(html\`<div>Hello world</div>\`, target, {host: input});
}) {
super(view);
}
}`,
filename: 'front_end/panels/recorder/test.ts',
},
],
invalid: [
{
code: `class SomeWidget extends UI.Widget.Widget {
constructor() {
super();
render(html\`<div>Hello world</div>\`, target, {host: this});
}
}`,
filename: 'front_end/components/test.ts',
errors: [{messageId: 'litRenderShouldBeInsideOfView'}],
},
{
code: `class SomeWidget extends UI.Widget.Widget {
constructor() {
super();
this.render();
}
render() {
render(html\`<div>Hello world</div>\`, target, {host: this});
}
}`,
filename: 'front_end/components/test.ts',
errors: [{messageId: 'litRenderShouldBeInsideOfView'}],
},
{
code: `const DEFAULT_VIEW = (input, output, target) => {
render(html\`<div>Hello world</div>\`, target);
}`,
filename: 'front_end/components/test.ts',
errors: [{messageId: 'litRenderShouldBeInsideOfView'}],
},
{
code: `const DEFAULT_VIEW = (input, output, target) => {
render(html\`<div>Hello world</div>\`, target, {host: this});
}`,
filename: 'front_end/components/test.ts',
errors: [{messageId: 'litRenderShouldBeInsideOfView'}],
},
{
code: `const DEFAULT_VIEW = (input, output, target) => {
render(html\`<div>Hello world</div>\`, this.contentElement, {host: input});
}`,
filename: 'front_end/components/test.ts',
errors: [{messageId: 'litRenderShouldBeInsideOfView'}],
},
],
});