diff --git a/test/jdk/java/awt/Focus/6981400/Test1.java b/test/jdk/java/awt/Focus/6981400/Test1.java
index 730e10804faa6ed28270988f5c16d047652c958e..ab60129ba94df6f657735d5b8e82143756c880d8 100644
--- a/test/jdk/java/awt/Focus/6981400/Test1.java
+++ b/test/jdk/java/awt/Focus/6981400/Test1.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -27,8 +27,8 @@
  * @bug     6981400
  * @summary Tabbing between textfiled do not work properly when ALT+TAB
  * @author  anton.tarasov
- * @library ../../regtesthelpers
- * @build   Util
+ * @library /java/awt/regtesthelpers /test/lib
+ * @build   Util jdk.test.lib.Platform
  * @run     main Test1
  */
 
@@ -41,12 +41,28 @@
 // The FOCUS_LOST/FOCUS_GAINED events order in the original frame is tracked and should be:
 // b0 -> b1 -> b2 -> b3.
 
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.AWTEvent;
+import java.awt.AWTException;
+import java.awt.Button;
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Robot;
+import java.awt.Toolkit;
+import java.awt.event.AWTEventListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.WindowEvent;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import javax.swing.*;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+
+import jdk.test.lib.Platform;
 import test.java.awt.regtesthelpers.Util;
 
 public class Test1 {
@@ -72,7 +88,7 @@ public class Test1 {
 
     static boolean tracking;
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
         Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
             public void eventDispatched(AWTEvent e) {
                 System.out.println(e);
@@ -81,6 +97,7 @@ public class Test1 {
 
         try {
             robot = new Robot();
+            robot.setAutoDelay(50);
         } catch (AWTException ex) {
             throw new RuntimeException("Error: can't create Robot");
         }
@@ -90,13 +107,13 @@ public class Test1 {
         f0.add(f0b2);
         f0.add(f0b3);
         f0.setLayout(new FlowLayout());
-        f0.setBounds(0, 100, 400, 200);
+        f0.setBounds(100, 100, 400, 200);
 
         f1.add(f1b0);
-        f1.setBounds(0, 400, 400, 200);
+        f1.setBounds(100, 400, 400, 200);
 
         f2.add(f2b0);
-        f2.setBounds(0, 400, 400, 200);
+        f2.setBounds(100, 400, 400, 200);
 
         f0b0.addFocusListener(new FocusAdapter() {
             @Override
@@ -115,6 +132,7 @@ public class Test1 {
         f0.setVisible(true);
 
         Util.waitForIdle(robot);
+        robot.delay(500);
 
         if (!f0b0.isFocusOwner()) {
             Util.clickOnComp(f0b0, robot);
@@ -152,28 +170,29 @@ public class Test1 {
         System.out.println("\nTest passed.");
     }
 
-    public static void test(Component compToClick) {
+    public static void test(Component compToClick) throws Exception {
         tracking = true;
 
         robot.keyPress(KeyEvent.VK_TAB);
-        robot.delay(50);
         robot.keyRelease(KeyEvent.VK_TAB);
-        robot.delay(50);
+        robot.waitForIdle();
 
         robot.keyPress(KeyEvent.VK_TAB);
-        robot.delay(50);
         robot.keyRelease(KeyEvent.VK_TAB);
-        robot.delay(50);
+        robot.waitForIdle();
 
         robot.keyPress(KeyEvent.VK_TAB);
-        robot.delay(50);
         robot.keyRelease(KeyEvent.VK_TAB);
+        robot.waitForIdle();
 
-        robot.delay(50);
         Util.clickOnComp(compToClick, robot);
 
-        robot.delay(50);
-        Util.clickOnTitle(f0, robot);
+        robot.waitForIdle();
+        SwingUtilities.invokeAndWait(f0::toFront);
+
+        if (!Platform.isOnWayland()) {
+            Util.clickOnTitle(f0, robot);
+        }
 
         Util.waitForIdle(robot);
 
diff --git a/test/jdk/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java b/test/jdk/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java
index 1e5b27892087c9268e7440b7997365c08c9c0d63..35c6b5cdee64c78187e67964d7b4b131686e3dee 100644
--- a/test/jdk/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java
+++ b/test/jdk/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowBlockingTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,13 +26,27 @@
   @key headful
   @bug       6314575
   @summary   Tests that previosly focused owned window doesn't steal focus when an owner's component requests focus.
-  @library   ../../regtesthelpers
-  @build     Util
+  @library /java/awt/regtesthelpers /test/lib
+  @build   Util jdk.test.lib.Platform
   @run       main ActualFocusedWindowBlockingTest
 */
 
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.AWTEvent;
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.KeyboardFocusManager;
+import java.awt.Robot;
+import java.awt.Toolkit;
+import java.awt.Window;
+import java.awt.event.AWTEventListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.WindowEvent;
+
+import jdk.test.lib.Platform;
 import test.java.awt.regtesthelpers.Util;
 
 public class ActualFocusedWindowBlockingTest {
@@ -44,7 +58,7 @@ public class ActualFocusedWindowBlockingTest {
     Button wButton = new Button("window button") {public String toString() {return "Window_Button";}};
     Button aButton = new Button("auxiliary button") {public String toString() {return "Auxiliary_Button";}};
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
         ActualFocusedWindowBlockingTest app = new ActualFocusedWindowBlockingTest();
         app.init();
         app.start();
@@ -68,7 +82,7 @@ public class ActualFocusedWindowBlockingTest {
         tuneAndShowWindows(new Window[] {owner, win, frame});
     }
 
-    public void start() {
+    public void start() throws Exception {
         System.out.println("\nTest started:\n");
 
         // Test 1.
@@ -99,7 +113,12 @@ public class ActualFocusedWindowBlockingTest {
         clickOnCheckFocus(fButton);
         clickOnCheckFocus(aButton);
 
-        Util.clickOnTitle(owner, robot);
+        EventQueue.invokeAndWait(owner::toFront);
+
+        if (!Platform.isOnWayland()) {
+            Util.clickOnTitle(owner, robot);
+        }
+
         if (!testFocused(fButton)) {
             throw new TestFailedException("The owner's component [" + fButton + "] couldn't be focused as the most recent focus owner");
         }
@@ -117,11 +136,15 @@ public class ActualFocusedWindowBlockingTest {
             y += 200;
             Util.waitForIdle(robot);
         }
+        robot.delay(500);
     }
 
-    void clickOnCheckFocus(Component c) {
+    void clickOnCheckFocus(Component c) throws Exception {
         if (c instanceof Frame) {
-            Util.clickOnTitle((Frame)c, robot);
+            EventQueue.invokeAndWait(() -> ((Frame) c).toFront());
+            if (!Platform.isOnWayland()) {
+                Util.clickOnTitle((Frame) c, robot);
+            }
         } else {
             Util.clickOnComp(c, robot);
         }
diff --git a/test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java b/test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java
index d4f0d65f071e0640372f5e435c89c87827655f02..4c659819c3c255d18ad9abbd1df2b5626527534f 100644
--- a/test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java
+++ b/test/jdk/java/awt/Focus/ModalDialogInFocusEventTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -22,11 +22,11 @@
  */
 
 /*
-  test
+  @test
+  @key headful
   @bug 4531693 4636269 4681908 4688142 4691646 4721470
   @summary Showing modal dialog during dispatching SequencedEvent
-  @key headful
-  @run main AutomaticAppletTest
+  @run main ModalDialogInFocusEventTest
 */
 
 import java.awt.AWTEvent;
@@ -68,6 +68,8 @@ public class ModalDialogInFocusEventTest
     static final int MAX_STAGE_NUM = stages.length;
     static final Object stageMonitor = new Object();
 
+    static boolean isOnWayland;
+
     Robot robot = null;
     Frame frame;
     Frame oppositeFrame;
@@ -209,18 +211,21 @@ public class ModalDialogInFocusEventTest
 
     void clickOnFrameTitle(Frame frame) throws InterruptedException,
             InvocationTargetException {
-        System.out.println("click on title of " + frame.getName());
-        int[] point = new int[2];
-        EventQueue.invokeAndWait(() -> {
-            Point location = frame.getLocationOnScreen();
-            Insets insets = frame.getInsets();
-            int width = frame.getWidth();
-            point[0] = location.x + width / 2;
-            point[1] = location.y + insets.top / 2;
-        });
-        robot.mouseMove(point[0], point[1]);
-        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
-        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+        EventQueue.invokeAndWait(frame::toFront);
+        if (!isOnWayland) {
+            System.out.println("click on title of " + frame.getName());
+            int[] point = new int[2];
+            EventQueue.invokeAndWait(() -> {
+                Point location = frame.getLocationOnScreen();
+                Insets insets = frame.getInsets();
+                int width = frame.getWidth();
+                point[0] = location.x + width / 2;
+                point[1] = location.y + insets.top / 2;
+            });
+            robot.mouseMove(point[0], point[1]);
+            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+        }
         EventQueue.invokeAndWait(frame::requestFocusInWindow);
     }
 
@@ -344,6 +349,7 @@ public class ModalDialogInFocusEventTest
 
     public static void main(String[] args) throws InterruptedException,
             InvocationTargetException {
+        isOnWayland = System.getenv("WAYLAND_DISPLAY") != null;
         ModalDialogInFocusEventTest test = new ModalDialogInFocusEventTest();
         test.start();
     }
diff --git a/test/jdk/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java b/test/jdk/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java
index 0bd5dd192724600b175e847037a43037e80dccac..c11f0476bc74ca4a64fa4b95b71d0a23ae99551a 100644
--- a/test/jdk/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java
+++ b/test/jdk/java/awt/Mixing/AWT_Mixing/HierarchyBoundsListenerMixingTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -21,12 +21,33 @@
  * questions.
  */
 
-
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.Choice;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.EventQueue;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.List;
+import java.awt.Panel;
+import java.awt.Robot;
+import java.awt.Scrollbar;
+import java.awt.TextArea;
+import java.awt.TextField;
+import java.awt.event.HierarchyBoundsListener;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.lang.reflect.InvocationTargetException;
 import javax.swing.SwingUtilities;
-import java.io.*;
+
+import jdk.test.lib.Platform;
 
 /**
  * AWT Mixing test for HierarchyBoundsListener ancestors.
@@ -37,7 +58,8 @@ import java.io.*;
  * @key headful
  * @bug 6768230 8221823
  * @summary Mixing test for HierarchyBoundsListener ancestors
- * @build FrameBorderCounter
+ * @library /test/lib
+ * @build FrameBorderCounter jdk.test.lib.Platform
  * @run main HierarchyBoundsListenerMixingTest
  */
 public class HierarchyBoundsListenerMixingTest {
@@ -137,9 +159,9 @@ public class HierarchyBoundsListenerMixingTest {
         robot.mouseMove((int) components[0].getLocationOnScreen().x + components[0].getSize().width / 2,
                         (int) components[0].getLocationOnScreen().y + components[0].getSize().height / 2);
         robot.delay(delay);
-        robot.mousePress(InputEvent.BUTTON1_MASK);
+        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
         robot.delay(delay);
-        robot.mouseRelease(InputEvent.BUTTON1_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
         robot.delay(delay);
 
         resetValues();
@@ -177,45 +199,54 @@ public class HierarchyBoundsListenerMixingTest {
         robot.delay(delay * 5);
 
         resetValues();
-        int x = (int) frame.getLocationOnScreen().x;
-        int y = (int) frame.getLocationOnScreen().y;
-        int w = frame.getSize().width;
-        int h = frame.getSize().height;
-
-        robot.mouseMove(x + w + BORDER_SHIFT, y + h / 2);
-        robot.delay(delay);
-        robot.mousePress(InputEvent.BUTTON1_MASK);
-        robot.delay(delay);
-        for (int i = 0; i < 20; i++) {
-            robot.mouseMove(x + w + i + BORDER_SHIFT, y + h / 2);
-            robot.delay(50);
-        }
-        robot.delay(delay);
-        robot.mouseRelease(InputEvent.BUTTON1_MASK);
 
-        if (! resizeTriggered) {
-            synchronized (resizeLock) {
-                try {
-                    resizeLock.wait(delay * 10);
-                } catch (Exception e) {
+        int x;
+        int y;
+        int w;
+        int h;
+
+        if (!Platform.isOnWayland()) {
+            x = frame.getLocationOnScreen().x;
+            y = frame.getLocationOnScreen().y;
+            w = frame.getSize().width;
+            h = frame.getSize().height;
+
+            robot.mouseMove(x + w + BORDER_SHIFT, y + h / 2);
+            robot.delay(delay);
+            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+            robot.delay(delay);
+            for (int i = 0; i < 20; i++) {
+                robot.mouseMove(x + w + i + BORDER_SHIFT, y + h / 2);
+                robot.delay(50);
+            }
+            robot.delay(delay);
+            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+
+            if (!resizeTriggered) {
+                synchronized (resizeLock) {
+                    try {
+                        resizeLock.wait(delay * 10);
+                    } catch (Exception e) {
+                    }
                 }
             }
-        }
 
-        for (int i = 0; i < components.length; i++) {
-            if (! ancestorResized[i]) {
-                System.err.println("FAIL: Frame resized using mouse action. " +
-                                   "Ancestor resized event did not occur for " +
-                                   components[i].getClass());
+            for (int i = 0; i < components.length; i++) {
+                if (!ancestorResized[i]) {
+                    System.err.println("FAIL: Frame resized using mouse action. " +
+                            "Ancestor resized event did not occur for " +
+                            components[i].getClass());
+                    passed = false;
+                }
+            }
+            if (moveCount > 0) {
+                System.err.println("FAIL: Ancestor moved event occurred when Frame resized using mouse");
                 passed = false;
             }
-        }
-        if (moveCount > 0) {
-            System.err.println("FAIL: Ancestor moved event occured when Frame resized using mouse");
-            passed = false;
+
+            resetValues();
         }
 
-        resetValues();
         try {
             EventQueue.invokeAndWait(new Runnable() {
                 public void run() {
@@ -250,52 +281,55 @@ public class HierarchyBoundsListenerMixingTest {
         robot.delay(delay * 10);
 
         resetValues();
-        x = (int) frame.getLocationOnScreen().x;
-        y = (int) frame.getLocationOnScreen().y;
-        w = frame.getSize().width;
-        h = frame.getSize().height;
-
-        //Click on the dummy frame so that the test frame loses focus. This is to workaround
-        //a bug in Linux AS.
-        robot.mouseMove((int) dummy.getLocationOnScreen().x + dummy.getSize().width / 2,
-                        (int) dummy.getLocationOnScreen().y + dummy.getSize().height / 2);
-        robot.delay(delay);
-        robot.mousePress(InputEvent.BUTTON1_MASK);
-        robot.delay(delay);
-        robot.mouseRelease(InputEvent.BUTTON1_MASK);
-        robot.delay(delay);
 
-        robot.mouseMove(x + w / 2, y + 10);
-        robot.delay(delay);
-        robot.mousePress(InputEvent.BUTTON1_MASK);
-        robot.delay(delay);
-        for (int i = 1; i <= 20; i++) {
-            robot.mouseMove(x + w / 2 + i, y + 10);
-            robot.delay(50);
-        }
-        robot.delay(delay);
-        robot.mouseRelease(InputEvent.BUTTON1_MASK);
-
-        if (! moveTriggered) {
-            synchronized (moveLock) {
-                try {
-                    moveLock.wait(delay * 10);
-                } catch (Exception e) {
+        if (!Platform.isOnWayland()) {
+            x = frame.getLocationOnScreen().x;
+            y = frame.getLocationOnScreen().y;
+            w = frame.getSize().width;
+            h = frame.getSize().height;
+
+            //Click on the dummy frame so that the test frame loses focus. This is to workaround
+            //a bug in Linux AS.
+            robot.mouseMove((int) dummy.getLocationOnScreen().x + dummy.getSize().width / 2,
+                            (int) dummy.getLocationOnScreen().y + dummy.getSize().height / 2);
+            robot.delay(delay);
+            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+            robot.delay(delay);
+            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+            robot.delay(delay);
+
+            robot.mouseMove(x + w / 2, y + 10);
+            robot.delay(delay);
+            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+            robot.delay(delay);
+            for (int i = 1; i <= 20; i++) {
+                robot.mouseMove(x + w / 2 + i, y + 10);
+                robot.delay(50);
+            }
+            robot.delay(delay);
+            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
+
+            if (! moveTriggered) {
+                synchronized (moveLock) {
+                    try {
+                        moveLock.wait(delay * 10);
+                    } catch (Exception e) {
+                    }
                 }
             }
-        }
 
-        for (int i = 0; i < components.length; i++) {
-            if (! ancestorMoved[i]) {
-                System.err.println("FAIL: Frame moved using mouse action. " +
-                                   "Ancestor moved event did not occur for " + components[i].getClass());
+            for (int i = 0; i < components.length; i++) {
+                if (! ancestorMoved[i]) {
+                    System.err.println("FAIL: Frame moved using mouse action. " +
+                                       "Ancestor moved event did not occur for " + components[i].getClass());
+                    passed = false;
+                }
+            }
+            if (resizeCount > 0) {
+                System.err.println("FAIL: Ancestor resized event occured when Frame moved using mouse");
                 passed = false;
             }
         }
-        if (resizeCount > 0) {
-            System.err.println("FAIL: Ancestor resized event occured when Frame moved using mouse");
-            passed = false;
-        }
 
         return passed;
     }
@@ -450,7 +484,7 @@ public class HierarchyBoundsListenerMixingTest {
     //  instantiated in the same VM.  Being static (and using
     //  static vars), it aint gonna work.  Not worrying about
     //  it for now.
-    public static void main(String args[]) throws InterruptedException {
+    public static void main(String[] args) throws InterruptedException {
         mainThread = Thread.currentThread();
         try {
             init();
diff --git a/test/lib/jdk/test/lib/Platform.java b/test/lib/jdk/test/lib/Platform.java
index 00e922bb15a8d6b93cdf094e66d4016160798992..2e2e16e65936bead09c08953aa9a9d00cc86b172 100644
--- a/test/lib/jdk/test/lib/Platform.java
+++ b/test/lib/jdk/test/lib/Platform.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -451,4 +451,13 @@ public class Platform {
     public static boolean areCustomLoadersSupportedForCDS() {
         return (is64bit() && (isLinux() || isOSX()));
     }
+
+    /**
+     * Checks if the current system is running on Wayland display server on Linux.
+     *
+     * @return {@code true} if the system is running on Wayland display server
+     */
+    public static boolean isOnWayland() {
+        return System.getenv("WAYLAND_DISPLAY") != null;
+    }
 }