diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.ecore b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.ecore
new file mode 100644
index 0000000000..b73e2e827b
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.ecore
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.odesign b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.odesign
new file mode 100644
index 0000000000..0426e57db3
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/My.odesign
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/representations.aird b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/representations.aird
new file mode 100644
index 0000000000..766a3922da
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeLabelLocationZoom/representations.aird
@@ -0,0 +1,645 @@
+
+
+
+ My.ecore
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ labelSize
+ labelFormat
+ labelColor
+ hideLabelByDefault
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ hideLabelByDefault
+ labelColor
+ labelFormat
+ labelSize
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ size
+ centered
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ labelSize
+ labelFormat
+ labelColor
+ hideLabelByDefault
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ hideLabelByDefault
+ labelColor
+ labelFormat
+ labelSize
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ size
+ centered
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ labelSize
+ labelFormat
+ labelColor
+ hideLabelByDefault
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+ workspacePath
+ hideLabelByDefault
+ labelColor
+ labelFormat
+ labelSize
+ bold
+
+
+
+
+ KEEP_LOCATION
+ KEEP_SIZE
+ KEEP_RATIO
+
+
+
+
+
+
+
+
+
+ size
+ centered
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeLabelLocationZoomTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeLabelLocationZoomTest.java
new file mode 100644
index 0000000000..592cb09a6b
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeLabelLocationZoomTest.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2024 THALES GLOBAL SERVICES.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.tests.swtbot;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.ui.internal.edit.parts.DEdgeNameEditPart;
+import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UIDiagramRepresentation;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UIDiagramRepresentation.ZoomLevel;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UILocalSession;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource;
+import org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+/**
+ * This test verifies that an edge label is always at the same position, whatever the zoom and shape of the edge. In
+ * particular, for a borderline case with the shape of the edge.
+ *
+ * @author scosta
+ */
+@RunWith(Parameterized.class)
+public class EdgeLabelLocationZoomTest extends AbstractSiriusSwtBotGefTestCase {
+
+ private static final String MODEL = "My.ecore";
+
+ private static final String SESSION_FILE = "representations.aird";
+
+ private static final String VSM_FILE = "My.odesign";
+
+ private static final String DATA_UNIT_DIR = "data/unit/edgeLabelLocationZoom/";
+
+ private static final String REPRESENTATION_DESCRIPTION_NAME = "DTestBugLabelEdge";
+
+ private String representationName;
+
+ private ZoomLevel zoom;
+
+ private UIResource sessionAirdResource;
+
+ private UILocalSession localSession;
+
+ /**
+ * Current diagram.
+ */
+ protected UIDiagramRepresentation diagram;
+
+ public EdgeLabelLocationZoomTest(String testName, String representationName, ZoomLevel zoom) {
+ this.representationName = representationName;
+ this.zoom = zoom;
+ setName("testEdgeLabelLocationWithZoom." + representationName + "." + zoom);
+ }
+
+ @Parameterized.Parameters(name = "{0}")
+ public static Collection