public void testWaitsTillProgressBarCompletes() {
    final JFrame frame = new JFrame();

    final JProgressBar progressBar1 = new JProgressBar();
    final JProgressBar progressBar2 = new JProgressBar(0, 10);
    createProgressBarsInFrame(frame, progressBar1, progressBar2);
    setFocusManager(frame);

    windowContext.propertyChange(new PropertyChangeEvent(this, "focusOwner", null, progressBar2));

    long before = System.currentTimeMillis();

    Thread thread1 = spawnFirstThreadToInactivateFirstProgressBar(progressBar1);
    Thread thread2 = spawnSecondThreadToInactivateSecondProgressBar(progressBar2);

    windowContext.waitForProgressBar();
    long after = System.currentTimeMillis();

    assertTrue((after - before) > 500);
    ThreadUtil.sleep(100);
    assertFalse(thread1.isAlive());
    assertFalse(thread2.isAlive());
    frame.dispose();
  }