+ {toasts.map((toast) => (
+
+ {toast.message}
+
+
+ ))}
+
+ );
+};
+
+export default ToastContainer;
diff --git a/src/components/__tests__/AppContent-ui-toast-feedback.vitest.test.tsx b/src/components/__tests__/AppContent-ui-toast-feedback.vitest.test.tsx
new file mode 100644
index 00000000..51ceab13
--- /dev/null
+++ b/src/components/__tests__/AppContent-ui-toast-feedback.vitest.test.tsx
@@ -0,0 +1,117 @@
+import React from 'react';
+import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
+import '@testing-library/jest-dom/vitest';
+import { render, screen, fireEvent, waitFor } from '@testing-library/react';
+import { AppContent } from '../AppContent';
+// These imports do not exist yet — that is what makes these tests red (Phase 4).
+import { ToastProvider } from '../../contexts/ToastContext';
+import ToastContainer from '../ToastContainer';
+import { createMockWorkerManager } from '../../test-support/mocks/WorkerManager.mock';
+import type { WorkerManager } from '../../services/WorkerManager';
+
+// Stub heavy / irrelevant children; keep Actions real so SAVE/LOAD controls exist.
+vi.mock('../CRTWorker', () => ({ __esModule: true, default: () =>