diff --git a/tests/test_elements_worker/test_worker.py b/tests/test_elements_worker/test_worker.py
index f14a633226b9079335c072b5e2788a7510123170..185faac65daa86017dbdbd31fee0cfb49f5a880d 100644
--- a/tests/test_elements_worker/test_worker.py
+++ b/tests/test_elements_worker/test_worker.py
@@ -14,6 +14,23 @@ TEST_VERSION_ID = "test_123"
 TEST_SLUG = "some_slug"
 
 
+def prepare_single_worker_element(responses, monkeypatch, worker):
+    """
+    Mock a worker instance to list and retrieve a single element
+    """
+    monkeypatch.setattr(worker, "list_elements", lambda: ["1234-deadbeef"])
+    responses.add(
+        responses.GET,
+        "http://testserver/api/v1/element/1234-deadbeef/",
+        status=200,
+        json={
+            "id": "1234-deadbeef",
+            "type": "page",
+            "name": "Test Page n°1",
+        },
+    )
+
+
 def test_get_worker_version(fake_dummy_worker):
     api_client = fake_dummy_worker.api_client
 
@@ -166,24 +183,7 @@ def test_run(
     # Disable second configure call from run()
     monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
 
-    # Mock elements
-    monkeypatch.setattr(
-        mock_elements_worker,
-        "list_elements",
-        lambda: [
-            "1234-deadbeef",
-        ],
-    )
-    responses.add(
-        responses.GET,
-        "http://testserver/api/v1/element/1234-deadbeef/",
-        status=200,
-        json={
-            "id": "1234-deadbeef",
-            "type": "page",
-            "name": "Test Page n°1",
-        },
-    )
+    prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
     assert mock_elements_worker.is_read_only is False
 
     # Mock exception in process_element
@@ -230,7 +230,11 @@ def test_run(
 
 
 def test_run_cache(
-    monkeypatch, mocker, mock_elements_worker_with_cache, mock_cached_elements, mock_activity_calls,
+    monkeypatch,
+    mocker,
+    mock_elements_worker_with_cache,
+    mock_cached_elements,
+    mock_activity_calls,
 ):
     # Disable second configure call from run()
     monkeypatch.setattr(mock_elements_worker_with_cache, "configure", lambda: None)
@@ -246,3 +250,57 @@ def test_run_cache(
         mocker.call(elt)
         for elt in CachedElement.select()
     ]
+
+
+def test_activity_conflict(monkeypatch, responses, mocker, mock_elements_worker):
+    # Disable second configure call from run()
+    monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
+    prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
+
+    # Mock a "normal" conflict during in activity update, which returns the Exception
+    mock_elements_worker.update_activity = mocker.MagicMock()
+    mock_elements_worker.update_activity.return_value = ErrorResponse(
+        title="conflict",
+        status_code=409,
+        content="Either this activity does not exists or this state is not allowed.",
+    )
+    from arkindex_worker.worker import logger
+
+    logger.warning = mocker.MagicMock()
+
+    mock_elements_worker.run()
+
+    assert mock_elements_worker.update_activity.call_args_list == [
+        mocker.call("1234-deadbeef", ActivityState.Started)
+    ]
+    assert logger.warning.call_args_list == [
+        mocker.call(
+            "Cannot start processing element 1234-deadbeef due to a conflict. "
+            "Another process could have processed it with the same version already."
+        )
+    ]
+
+
+def test_activity_error(monkeypatch, responses, mocker, mock_elements_worker):
+    # Disable second configure call from run()
+    monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
+    prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
+
+    # Mock a "normal" conflict during in activity update, which returns the Exception
+    mock_elements_worker.update_activity = mocker.MagicMock()
+    mock_elements_worker.update_activity.return_value = Exception(
+        "A wild Petilil appears !"
+    )
+    from arkindex_worker.worker import logger
+
+    logger.error = mocker.MagicMock()
+
+    with pytest.raises(SystemExit):
+        mock_elements_worker.run()
+
+    assert mock_elements_worker.update_activity.call_args_list == [
+        mocker.call("1234-deadbeef", ActivityState.Started)
+    ]
+    assert logger.error.call_args_list == [
+        mocker.call("Ran on 1 elements: 0 completed, 1 failed")
+    ]