Refactor to enforce strictNullChecks
This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { expectExists } from '@tests/shared/Assertions/ExpectExists';
|
||||
|
||||
describe('revert toggle', () => {
|
||||
context('toggle switch', () => {
|
||||
beforeEach(() => {
|
||||
@@ -30,20 +32,24 @@ describe('revert toggle', () => {
|
||||
const font = getFont($label[0]);
|
||||
const expectedMinimumTextWidth = getTextWidth(text, font);
|
||||
const containerWidth = $label.parent().width();
|
||||
expectExists(containerWidth);
|
||||
expect(expectedMinimumTextWidth).to.be.lessThan(containerWidth);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function getFont(element) {
|
||||
function getFont(element: Element): string {
|
||||
const computedStyle = window.getComputedStyle(element);
|
||||
return `${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;
|
||||
}
|
||||
|
||||
function getTextWidth(text, font) {
|
||||
function getTextWidth(text: string, font: string): number {
|
||||
const canvas = document.createElement('canvas');
|
||||
const ctx = canvas.getContext('2d');
|
||||
if (!ctx) {
|
||||
throw new Error('Unable to get 2D context from canvas element');
|
||||
}
|
||||
ctx.font = font;
|
||||
const measuredWidth = ctx.measureText(text).width;
|
||||
return measuredWidth;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"lib": [
|
||||
@@ -8,7 +9,8 @@
|
||||
"types": [
|
||||
"cypress",
|
||||
"node"
|
||||
]
|
||||
],
|
||||
"sourceMap": false,
|
||||
},
|
||||
"include": [
|
||||
"**/*.ts"
|
||||
|
||||
Reference in New Issue
Block a user