@Test
	public void testCopyActionEnablement() {

		// no copy on by default
		DockingAction byteViewerCopyAction =
			getAction(byteViewerClipboardProvider, COPY_ACTION_NAME);
		DockingAction codeBrowserCopyAction =
			getAction(codeBrowserClipboardProvider, COPY_ACTION_NAME);
		DockingAction decompileCopyAction = getAction(decompileClipboardProvider, COPY_ACTION_NAME);

		waitForSwing();

		assertFalse(byteViewerCopyAction.isEnabled());
		assertFalse(codeBrowserCopyAction.isEnabled());

		// this action is enabled on any text
		// assertFalse(decompileCopyAction.isEnabled());

		// give the providers focus and check their actions state
		assertFalse(byteViewerCopyAction.isEnabled());

		// the code browser is special--make sure that it not only has focus, but that the location
		// of the cursor is not one of the 'special' copy locations
		codeBrowserPlugin.goTo(new MnemonicFieldLocation(program, addr("1001050")));
		assertTrue(codeBrowserCopyAction.isEnabled());

		// For each provider:
		// check copy on selection state
		makeSelection(byteViewerWrapper);

		// check the state
		assertTrue(byteViewerCopyAction.isEnabled());

		// clear the selection
		byteViewerWrapper.clearSelection();

		// check copy on selection state
		makeSelection(codeViewerWrapper);

		// check the state
		boolean enabled = codeBrowserCopyAction.isEnabled();
		assertTrue(enabled);

		// clear the selection
		codeViewerWrapper.clearSelection();

		// check copy on selection state
		makeSelection(decompilerWrapper);

		// check the state
		assertTrue(decompileCopyAction.isEnabled());
	}
Note: This test is sensitive to focus. So, don't click any windows while this test is running.
Ghidra/Test/IntegrationTest/src/test.slow/java/ghidra/app/plugin/core/clipboard/ClipboardPluginTest.java