Angular Testing Library | Testing Library

The problem

You want to write maintainable tests for your Angular components. As a part of this goal, you want your tests to avoid including implementation details of your components and rather focus on making your tests give you the confidence for which they are intended. As part of this, you want your testbase to be maintainable in the long run so refactors of your components (changes to implementation but not functionality) don’t break your tests and slow you and your team down.

This solution

The Angular Testing Library is a very lightweight solution for testing Angular components. It provides light utility functions on top of DOM Testing Library in a way that encourages better testing practices. Its primary guiding principle is:

The more your tests resemble the way your software is used, the more confidence they can give you.

So rather than dealing with instances of rendered Angular components, your tests will work with actual DOM nodes. The utilities this library provides facilitate querying the DOM in the same way the user would. Finding form elements by their label text (just like a user would), finding links and buttons from their text (like a user would). It also exposes a recommended way to find elements by a data-testid as an “escape hatch” for elements where the text content and label do not make sense or is not practical.

This library encourages your applications to be more accessible and allows you to get your tests closer to using your components the way a user will, which allows your tests to give you more confidence that your application will work when a real user uses it.

Source: Angular Testing Library | Testing Library

API rate limiter in .NET Core 8

.NET Core 8 have built-in API rate limiter functionality.
Can be used in an API project like this in program.cs:

app.UseRateLimiter();

//(PUT BELOW CODE AFTER LINE: var app = builder.Build();)
//Setup API request rate limiter
//If a rate limit is exceeded in ASP.NET Core's Rate Limiting Middleware 
//HTTP response will have the status code: 429 Too Many Requests
builder.Services.AddRateLimiter(options =>
{
    options.AddFixedWindowLimiter(
        "default",
        limiterOptions =>
        {
            limiterOptions.PermitLimit = 10; // Allow 10 requests
            limiterOptions.Window = TimeSpan.FromSeconds(1); // Per second
            limiterOptions.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
            limiterOptions.QueueLimit = 2; // Allow 2 queued requests
        }
    );
});

 

Angular profiler for performance tuning | Angular Newsletter

When facing a performance issue, the Profiler is perfect for identifying the problem’s root cause. For instance, it could highlight that one component is much slower than the others and gets refreshed for no good reason, indicating that a different change detection strategy is needed.

Source: Angular profiler for performance tuning | Angular Newsletter

Angular automated migration from ngIf and ngFor directives markup to control blocks

Directives such as *ngIf and *ngFor will soon get deprecated to favor the new control flow blocks.

E.g. old directives:

<ng-container *ngIf="isLoggedIn">...</ng-container>

Can now be replaced with the new syntax:

@if (isLoggedIn) {
   ...
}

An automated migration CLI command is available

ShellMenuNew – Disable/enable ‘New’ menu items in Windows Explorer

ShellMenuNew is a small utility that displays the list of all menu items in the ‘New’ submenu of Windows Explorer. It allows you to easily disable unwanted menu items, so this ‘New’ submenu will display only the items that you need.

Source: ShellMenuNew – Disable/enable ‘New’ menu items in Windows Explorer

Animations CSS Generator | Web Code Tools

Our CSS Animation Generator is the perfect tool for web developers and designers! You can build the perfect animation for your project, choosing from a wide variety of predefined animations or customizing any of them through user-friendly options. Tailor properties like name, duration, timing, and delay to suit your design needs, and bring your website to life with seamless motion effects. Perfect for beginners and experts alike, this tool makes creating animations easier, saving you lots of time and effort

Source: Animations CSS Generator | Web Code Tools

Fixing github auth problem, cloning repository to Webstorm IDE

This probably works for other IDEs as well such as VS Code.
My context is Windows 10 and Webstorm version 2024.3.2.1

Problem: was connected to  my “work” github account and wanted also to be able to work with repos in my “private” github account.

Added the Github account in webstorm settings -> version control -> github -> (was logged in on github private account in web browser), got web browser authenticate question -> ok

Cloned a repo, got similar to the following git error message:

remote: Repository not found. fatal: repository 'https://github.com/MyUser/MyRepo.git/' not found

The repository exists at that location, its an auth problem.

Solution:

Tried to setup SSH but was a bit difficult, the “GitHub Desktop” application had no problem cloning and pushing though, but wanted it to work within Webstorm.

I tried the Github CLI application, download here: https://cli.github.com/

Open a terminal within Webstorm/at the project root and execute the gh command:

gh auth login

Follow the instructions regarding auth with web browser, (enter the one-time code at https://github.com/login/device).
Output from my terminal:

$ gh auth login
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser

! First copy your one-time code: ABCD-1234
Press Enter to open https://github.com/login/device in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as AndreasPlahn

Voila! Now it works for me, at least.

Update:
When pushing from Webstorm I get a dialog (on every push) which github acccount I want to be acting as.

This was annoying. Solved in this way:
(in cmd):

git credential-manager github list
-> see all logged in accounts

git credential-manager github logout <MyGithubAccountName>
-> logout one of the accounts to avoid

More info about git credential-manager in Windows:
https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/usage.md

Unlocking the power of CSS container queries: lessons from the Netflix team  |  web.dev

Container queries have revolutionized how developers approach responsive design, and the Netflix team has experienced firsthand the profound impact they can have on streamlining development, improving flexibility, and enhancing performance. This post breaks down the key benefits of using container queries, comparing them to older methods, particularly those relying on JavaScript for layout control. It includes code examples to illustrate each point, showing how container queries can make your life as a developer much easier.
web.dev/case-studies/netflix-cq