})
		})
	})

	Describe("ExampleDidComplete", func() {
		JustBeforeEach(func() {
			reporter.ExampleDidComplete(example)
		})

		BeforeEach(func() {
			example = &types.ExampleSummary{}
		})

		Context("When the example passed", func() {
			BeforeEach(func() {
				example.State = types.ExampleStatePassed
			})

			Context("When the example was a measurement", func() {
				BeforeEach(func() {
					example.IsMeasurement = true
				})

				It("should announce the measurement", func() {
					Ω(stenographer.Calls[0]).Should(Equal(call("AnnounceSuccesfulMeasurement", example, false)))
				})
			})

			Context("When the example is slow", func() {
				BeforeEach(func() {
					example.RunTime = time.Second
			Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/ExampleWillRun"))
			Ω(poster.posts[0].bodyType).Should(Equal("application/json"))

			var summary *types.ExampleSummary
			err := json.Unmarshal(poster.posts[0].bodyContent, &summary)
			Ω(err).ShouldNot(HaveOccurred())
			Ω(summary).Should(Equal(exampleSummary))
		})

		It("should start intercepting output", func() {
			Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue())
		})

		Context("When an example completes", func() {
			BeforeEach(func() {
				exampleSummary.State = types.ExampleStatePanicked
				reporter.ExampleDidComplete(exampleSummary)
			})

			It("should POST the ExampleSummary to the Ginkgo server and include any intercepted output", func() {
				Ω(poster.posts).Should(HaveLen(2))
				Ω(poster.posts[1].url).Should(Equal("http://127.0.0.1:7788/ExampleDidComplete"))
				Ω(poster.posts[1].bodyType).Should(Equal("application/json"))

				var summary *types.ExampleSummary
				err := json.Unmarshal(poster.posts[1].bodyContent, &summary)
				Ω(err).ShouldNot(HaveOccurred())
				exampleSummary.CapturedOutput = interceptor.InterceptedOutput
				Ω(summary).Should(Equal(exampleSummary))
			})