Skip to content

test: headlamp test - #3478

Draft
j-zimnowoda wants to merge 35 commits into
mainfrom
headlamp-test
Draft

test: headlamp test#3478
j-zimnowoda wants to merge 35 commits into
mainfrom
headlamp-test

Conversation

@j-zimnowoda

Copy link
Copy Markdown
Contributor

📌 Summary

🔍 Reviewer Notes

🧹 Checklist

  • Code is readable, maintainable, and robust.
  • Unit tests added/updated

@j-zimnowoda j-zimnowoda changed the title Headlamp test test: headlamp test Jul 30, 2026
Copilot AI lite review requested due to automatic review settings August 3, 2026 14:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces the Headlamp app into APL Core by vendoring/configuring the Helm chart, wiring it into Helmfile/defaults/core configuration, and adding a substantial Helm template “golden file” test harness plus CI coverage for the ci/src/add-app-helm-chart.ts helper.

Changes:

  • Add and configure the Headlamp Helm chart (templates, values, chart metadata) plus extensive rendered-template fixtures/tests.
  • Wire Headlamp into APL Core configuration (defaults, Helmfile release, namespaces/adminApps, integration fixtures, Headlamp values templates).
  • Extend CI to run tests for ci/src/* and add unit tests for Helmfile generation + stable semver resolution.

Reviewed changes

Copilot reviewed 130 out of 131 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
values/headlamp/headlamp.gotmpl Sets Headlamp pod labels for platform auth/auth-policy integration.
values/headlamp/headlamp-raw.gotmpl Adds raw Gateway API + Istio authn/z resources for Headlamp exposure.
tests/integration/monitoring-with-team.yaml Adds Headlamp enable/disable flag to integration fixture.
tests/integration/minimal.yaml Adds Headlamp enable/disable flag to integration fixture.
tests/integration/minimal-with-team.yaml Adds Headlamp enable/disable flag to integration fixture.
tests/integration/full.yaml Adds Headlamp enable/disable flag to integration fixture.
tests/fixtures/env/apps/headlamp.yaml Adds Headlamp app fixture manifest for integration tests.
jest.config.ts Expands Jest roots to include ci/src tests.
helmfile.d/snippets/defaults.yaml Adds default apps.headlamp config scaffold.
helmfile.d/helmfile-92.headlamp.yaml.gotmpl Adds Helmfile releases for Headlamp (+ artifacts/raw release).
core.yaml Registers Headlamp namespace and adminApps entry (own host).
ci/src/add-app-helm-chart.test.ts Adds unit tests for helmfile scaffolding + semver resolution behavior.
ci/package.json Adds/adjusts CI scripts to run update/schema checks and CI tests.
charts/headlamp/tests/update-version.sh Adds helper to refresh expected templates when versions change.
charts/headlamp/tests/test.sh Adds golden-file Helm template test runner (diff-based).
charts/headlamp/tests/test_cases/volumes-added.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/topology-spread-constraints.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/topology-spread-constraints-custom-selector.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/tls-added.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/service-extra-ports.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/service-appprotocol.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/service-account-token.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/service-account-token-out-of-cluster.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/service-account-token-custom-token.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/security-context.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/readonly-root-filesystem.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/readonly-root-filesystem-plugins-only.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/readonly-root-filesystem-plugins-inherit.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/readonly-root-filesystem-custom-tmp.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/readonly-root-filesystem-custom-tmp-volume.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/pod-disruption.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-validator-overrides.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-pkce.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-external-secret.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-external-secret-with-scopes.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-directly.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-directly-env.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/oidc-create-secret.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/non-azure-oidc.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/namespace-override.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/namespace-override-oidc-create-secret.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/me-user-info-url.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/me-user-info-url-directly.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/ingress-multi-backend.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/httproute-enabled.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/host-users-override.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/host-aliases.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/extra-manifests.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/extra-args.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/disable-static-plugins.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/cluster-inventory.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/cluster-inventory-plugins.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/test_cases/azure-oidc-with-validators.yaml Adds Headlamp chart values test case.
charts/headlamp/tests/readme.md Documents how to run/update Headlamp chart template tests.
charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-relative-mount-path.yaml Adds negative test case for cluster-inventory plugin validation.
charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-mount-mismatch.yaml Adds negative test case for cluster-inventory plugin validation.
charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-invalid-name.yaml Adds negative test case for cluster-inventory plugin validation.
charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-command-equals-mount-path.yaml Adds negative test case for cluster-inventory plugin validation.
charts/headlamp/tests/failing_test_cases/cluster-inventory-empty-access-providers.yaml Adds negative test case for required accessProvidersConfig.
charts/headlamp/tests/expected_templates/default.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/volumes-added.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/topology-spread-constraints.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/topology-spread-constraints-custom-selector.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/tls-added.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/service-extra-ports.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/service-appprotocol.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/service-account-token.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/service-account-token-out-of-cluster.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/service-account-token-custom-token.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/readonly-root-filesystem.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/readonly-root-filesystem-custom-tmp.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/readonly-root-filesystem-custom-tmp-volume.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/pod-disruption.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-validator-overrides.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-pkce.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-external-secret.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-external-secret-with-scopes.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-directly.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-directly-env.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/oidc-create-secret.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/non-azure-oidc.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/namespace-override.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/me-user-info-url.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/me-user-info-url-directly.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/httproute-enabled.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/host-users-override.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/host-aliases.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/extra-manifests.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/extra-args.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/disable-static-plugins.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/cluster-inventory.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/tests/expected_templates/azure-oidc-with-validators.yaml Adds expected rendered output fixture for template tests.
charts/headlamp/templates/serviceaccount.yaml Adds ServiceAccount template for Headlamp chart.
charts/headlamp/templates/service.yaml Adds Service template for Headlamp chart.
charts/headlamp/templates/secret.yaml Adds OIDC Secret template for Headlamp chart.
charts/headlamp/templates/pvc.yaml Adds PVC template for Headlamp chart.
charts/headlamp/templates/plugin-configmap.yaml Adds plugin manager ConfigMap template for Headlamp chart.
charts/headlamp/templates/pdb.yaml Adds PodDisruptionBudget template for Headlamp chart.
charts/headlamp/templates/NOTES.txt Adds Helm NOTES output for Headlamp chart.
charts/headlamp/templates/ingress.yaml Adds Ingress template for Headlamp chart.
charts/headlamp/templates/httproute.yaml Adds HTTPRoute template for Headlamp chart.
charts/headlamp/templates/extra-manifests.yaml Adds extraManifests passthrough template for Headlamp chart.
charts/headlamp/templates/clusterrolebinding.yaml Adds ClusterRoleBinding template for Headlamp chart.
charts/headlamp/templates/cluster-inventory-configmap.yaml Adds cluster-inventory provider ConfigMap + validation logic.
charts/headlamp/templates/_helpers.tpl Adds helper templates for naming/labels/tmp volume logic.
charts/headlamp/Chart.yaml Adds Headlamp chart metadata (version/appVersion/etc.).
charts/headlamp/.helmignore Adds Helm ignore rules for vendored chart packaging.
chart/chart-index/Chart.yaml Adds Headlamp dependency to the chart index.
bin/dyff.sh Improves dyff output for added/deleted files/directories (including content output).
AGENTS.md Adds local agent workflow note about running bin/compare.sh for templating changes.
.vscode/settings.json Adds terminal auto-approve entries for common repo commands.
.github/workflows/ci-helm-chart.yml Switches to npm ci in ci/ and adds a step to run CI script tests.
.github/skills/apl-test-gotemplate-renders/SKILL.md Adds skill doc describing bin/compare.sh workflow.
.github/skills/apl-add-app/SKILL.md Adds skill doc for app-chart onboarding workflow.
.github/skills/apl-add-app-ingress/SKILL.md Adds skill doc for configuring public exposure scaffolding.
.github/copilot-instructions.md Updates contributor instructions (notably adds mandatory template diff reminder).

Comment on lines +15 to +18
{{- range .Values.persistentVolumeClaim.accessModes}}
accessModes:
- {{ . }}
{{- end}}
Comment on lines 60 to +67
- name: Install packages
run: |
cd ci/
npm install
npm ci
- name: Run CI script tests
run: |
cd ci/
npm run tests
Comment on lines +267 to +269
headlamp:
enabled: false
_rawValues: {}
Comment thread ci/package.json
Comment on lines +37 to +39
"update-helm-chart-deps": "src/update-helm-chart-deps.mjs",
"check-schema-versions": "src/check-schema-versions.mjs",
"tests": "npm --prefix .. run test:ts -- ci/src",
Copilot AI review requested due to automatic review settings August 3, 2026 14:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 130 out of 131 changed files in this pull request and generated 1 comment.

Suppressed comments (4)

ci/package.json:38

  • The CI scripts are zx programs (see shebangs in ci/src/*.mjs), but the npm scripts invoke them as bare paths and one of them points to a non-existent filename (check-schema-versions.mjs). This will fail unless the file is executable and named exactly as referenced. Use zx explicitly and reference the correct file name.
    charts/headlamp/templates/pvc.yaml:18
  • accessModes: is currently emitted once per entry because it is inside the range, which will generate duplicate YAML keys when more than one access mode is set (invalid manifest). Emit accessModes once and range only the list items.
  {{- range .Values.persistentVolumeClaim.accessModes}}
  accessModes:
    - {{ . }}
  {{- end}}

helmfile.d/snippets/defaults.yaml:269

  • A new apps.headlamp default is introduced here, but there is no corresponding Headlamp entry in values-schema.yaml. This repo expects all user-configurable app values to be present in the schema (used by validate-values), so adding at least enabled + _rawValues to the schema is needed to keep validation consistent.
    charts/headlamp/templates/service.yaml:19
  • externalTrafficPolicy is always rendered for NodePort/LoadBalancer, but service.externalTrafficPolicy is not defined in values.yaml. This can render as an empty/invalid value (and even if set to "", Kubernetes will reject it). Default it to a valid value (typically "Cluster") when unset.
  {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }}
  externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
  {{- end }}

Comment on lines +9 to +10
data:
plugin.yml: |{{ .Values.pluginsManager.configContent | nindent 4 }}
Copilot AI review requested due to automatic review settings August 4, 2026 07:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 130 out of 131 changed files in this pull request and generated 1 comment.

Suppressed comments (3)

charts/headlamp/templates/pvc.yaml:18

  • This template renders accessModes: inside a range, which produces repeated accessModes keys (one per mode) and results in invalid PVC YAML when multiple access modes are provided. Render accessModes once and iterate only the list items.
  {{- range .Values.persistentVolumeClaim.accessModes}}
  accessModes:
    - {{ . }}
  {{- end}}

ci/package.json:39

  • This script points to src/check-schema-versions.mjs, but that file doesn't exist in ci/src (the existing script is src/check-schema-version.mjs). This will make npm run check-schema-versions fail in CI.
    helmfile.d/snippets/defaults.yaml:269
  • apps.headlamp is added to defaults, but values-schema.yaml has no headlamp definition (searching for "headlamp" returns no matches). If npm run validate-values validates the merged values against the schema, this will fail until the schema is extended with .definitions.apps.properties.headlamp (at least enabled + _rawValues).

Comment on lines +17 to +19
{{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }}
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
{{- end }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants