private void doTest() throws Exception {
    ExtendedRobot robot = new ExtendedRobot();
    robot.waitForIdle(1000);

    final Point cl = combo.getLocationOnScreen();
    final Dimension cs = combo.getSize();

    SwingUtilities.invokeAndWait(
        new Runnable() {
          public void run() {
            frame.dispose();
          }
        });
    robot.waitForIdle(delay);
    SwingUtilities.invokeAndWait(
        new Runnable() {
          public void run() {
            frame.setSize((int) cl.x - 700 + cs.width, (int) cl.y + cs.height - 5);
            frame.setVisible(true);
          }
        });

    robot.waitForIdle(delay * 2);
    Point comboLocation = combo.getLocationOnScreen();
    Dimension comboSize = combo.getSize();

    robot.mouseMove((int) comboLocation.x + comboSize.width / 2, (int) comboLocation.y + 5);
    robot.waitForIdle(delay);
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.waitForIdle(delay);

    robot.mouseMove((int) comboLocation.x + comboSize.width / 2, (int) comboLocation.y + 60);
    robot.waitForIdle(delay);
    robot.mousePress(InputEvent.BUTTON1_MASK);
    robot.delay(100);
    robot.mouseRelease(InputEvent.BUTTON1_MASK);
    robot.waitForIdle(delay);

    if (!itemStateChanged) {
      synchronized (itemLock) {
        try {
          itemLock.wait(WAIT_EVENT_DELAY);
        } catch (Exception e) {
        }
      }
    }
    if (!itemStateChanged) {
      System.err.println("FAIL: ItemEvent not triggered when mouse clicked on combo box drop down");
      passed = false;
    }

    if (!passed) {
      System.err.println("Test failed!");
      captureScreenAndSave();
      throw new RuntimeException("FAIL");
    } else {
      System.out.println("Test passed!");
    }
  }