Skip to content

[dotnet] Upgrade .NET DevTools generator deps #17489

@titusfortner

Description

@titusfortner

Renovate #13964 flagged major bumps for two .NET deps used by the build-time CDP code generator at third_party/dotnet/devtools/src/generator:

Handlebars.Net 1.11.5 → 2.x
Humanizer.Core 2.8.26 → 3.x

I'm going to filter these in renovate.json file, so I'm creating an issue for visibility in case we want to address.

Note: Renovate additionally suggests we update dotnet monorepo to v10 (Microsoft.Bcl.AsyncInterfaces, Microsoft.Extensions.DependencyInjection, System.Text.Json, System.Threading.Channels), but I don't think we should do these so long as we support older targets, so I'm filtering those as well.

Scope

The generator is build-time only, but its output is the shipped Selenium.WebDriver.DevTools.* public API, so any change in template rendering or identifier casing is a breaking change for downstream consumers.

Breaking Changes

Handlebars.Net 2.x - Breaking changes in TemplatesManager.cs

  • Handlebars.Compile() returns HandlebarsTemplate<object,object> instead of Func<object,string>; propagates through the m_templateGenerators cache and the public method signature.
  • Helper callbacks change: context is now a BindingContext wrapper, so the three helpers (dehumanize, xml-code-comment, typemap) that pattern-match on context need .Value unwrapping.
  • Static Handlebars.Configuration / RegisterHelper deprecated in favor of per-instance Handlebars.Create(). Current code registers helpers per-template-load (latent bug) — should refactor to one instance.
  • Whitespace and text-encoding defaults shifted; may alter generated .cs output even after a clean port.

Humanizer 3.x — Dehumanize() is called on every CDP identifier from CommandGenerator.cs, DomainGenerator.cs, EventGenerator.cs, TypeGenerator.cs, ProtocolGenerator.cs, and the dehumanize Handlebars helper. v3 changes input normalization for:

  • All-caps fragments (URL, MIME, JSON, GPU)
  • Mixed-case with digits (IndexedDB, IO)
  • Single-letter segments (Page.javaScriptDialog)
  • The Negative{...Dehumanize()} double-call in TemplatesManager.cs relies on idempotency v3 may not preserve.

Any altered output renames public classes/properties on the shipped DevTools API.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions