diff --git a/assets/js/components/Energyflow/Energyflow.vue b/assets/js/components/Energyflow/Energyflow.vue
index 1ff226a40..85ef500dc 100644
--- a/assets/js/components/Energyflow/Energyflow.vue
+++ b/assets/js/components/Energyflow/Energyflow.vue
@@ -140,14 +140,16 @@
@@ -163,15 +165,17 @@
settings.unit, save(SETTINGS_UNIT));
watch(() => settings.is12hFormat, saveBool(SETTINGS_12H_FORMAT));
watch(() => settings.hiddenFeatures, saveBool(SETTINGS_HIDDEN_FEATURES));
watch(() => settings.energyflowDetails, saveBool(SETTINGS_ENERGYFLOW_DETAILS));
+watch(() => settings.energyflowCo2, saveBool(SETTINGS_ENERGYFLOW_CO2));
watch(() => settings.energyflowPv, saveBool(SETTINGS_ENERGYFLOW_PV));
watch(() => settings.energyflowBattery, saveBool(SETTINGS_ENERGYFLOW_BATTERY));
watch(() => settings.energyflowLoadpoints, saveBool(SETTINGS_ENERGYFLOW_LOADPOINTS));
diff --git a/tests/energyflow.spec.ts b/tests/energyflow.spec.ts
new file mode 100644
index 000000000..9ba6bf98f
--- /dev/null
+++ b/tests/energyflow.spec.ts
@@ -0,0 +1,42 @@
+import { test, expect } from "@playwright/test";
+import { start, stop, baseUrl } from "./evcc";
+
+const CONFIG = "config-with-tariffs.evcc.yaml";
+
+test.use({ baseURL: baseUrl() });
+
+test.beforeAll(async () => {
+ await start(CONFIG);
+});
+
+test.afterAll(async () => {
+ await stop();
+});
+
+test.beforeEach(async ({ page }) => {
+ await page.goto("/");
+});
+
+test("tariff toggle", async ({ page }) => {
+ const energyflow = page.getByTestId("energyflow");
+ await energyflow.click();
+
+ const details = page
+ .getByTestId("energyflow-entry-gridimport")
+ .getByTestId("energyflow-entry-details");
+
+ // check price
+ await expect(details).toHaveText("30.0 öre");
+
+ // toggle to co2
+ await details.click();
+ await expect(details).toHaveText("300 g");
+
+ // reload page and verify persistence
+ await page.reload();
+ await expect(details).toHaveText("300 g");
+
+ // toggle back to price
+ await details.click();
+ await expect(details).toHaveText("30.0 öre");
+});