content: drop repeated reference headings and land case CTAs on anchors
Service notes now say why the public case fits, the four case CTAs open the matching project fragment, and the Innofocus run-time figure is a case metric as well as a home tile. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -6,6 +6,8 @@ import { SITE_CONTENT } from '../core/content/content.token';
|
||||
import { SITE_CONTENT_DATA } from '../core/content/site-content';
|
||||
import { SITE_CONFIG } from '../core/content/site-config';
|
||||
import { CASE_STUDY_IDS } from '../core/content/content.contracts';
|
||||
import { APP_LOCALES } from '../core/i18n/locale';
|
||||
import { routePath } from '../core/routing/route-paths';
|
||||
|
||||
function headingLevel(element: Element): number {
|
||||
return Number(element.tagName.slice(1));
|
||||
@@ -95,4 +97,22 @@ describe('page rendering, semantics and accessibility', () => {
|
||||
|
||||
expect(SITE_CONTENT_DATA.de.pages.notFound.hero.headline).toBeTruthy();
|
||||
});
|
||||
|
||||
it('sends the software service case CTA to the innofocus project anchor', async () => {
|
||||
TestBed.configureTestingModule({
|
||||
providers: [provideRouter(routes), { provide: SITE_CONTENT, useValue: SITE_CONTENT_DATA }],
|
||||
});
|
||||
|
||||
const harness = await RouterTestingHarness.create();
|
||||
|
||||
for (const locale of APP_LOCALES) {
|
||||
await harness.navigateByUrl(routePath('servicesSoftware', locale));
|
||||
const root = harness.routeNativeElement as HTMLElement;
|
||||
const expected = `${routePath('projects', locale)}#innofocus`;
|
||||
const hrefs = [...root.querySelectorAll('a')].map(
|
||||
(anchor) => anchor.getAttribute('href') ?? '',
|
||||
);
|
||||
expect(hrefs.some((href) => href.endsWith(expected))).toBe(true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user