Haskell Hspec/Quickcheck test for numeric function
Ah, a fine Spec. Has been a while since I've used Hspec, but your tests seem reasonable. So, first of all: well done!
There is one bit we should fix though, and you have identified it yourself: the property tests.
QuickCheck's newtypes
Creating any kind of number and then checking whether it's positive is a hassle, as half the numbers will get discarded per candidate. However, since Hspec uses QuickCheck, we can use Positive to only generate positive numbers:
prop_divisible (Positive a) (Positive b) =  a `mod` d == 0 &amp;&amp; b `mod`d == 0
  where EuclidRes d s t = extendedEuclid a b

Other than that there are no more objective improvements.
However, there are some personal I would use in my own specs.
Reduce let … in … bindings in specs
Consider the following spec
  describe &quot;Trivial&quot; $ do
    it &quot;trivial example 99 1&quot; $
       let trivial = extendedEuclid 99 1      
       in  trivial `shouldBe` (EuclidRes 1 (0) 1)

If I want to understand the spec, I have to read the first line, remember the value of trivial (and that it hasn't been changed after calling extendedEuclid), and supply it in the next one.
If I instead write
  describe &quot;Trivial&quot; $ do
    it &quot;trivial example 99 1&quot; $
       extendedEuclid 99  1 `shouldBe` (EuclidRes 1 (0) 1)
-- or
    it &quot;trivial example 99 99&quot; $
       extendedEuclid 99 99 
           `shouldBe` (EuclidRes 99 (0) 1)

I immediately see that extendedEucild is getting tested. This also fits the official style, where let … in … bindings aren't used at all.
Other small pieces
You can use prop from Test.Hspec.QuickCheck instead of it &quot;...&quot; $ property $ ...:
import Test.Hspec.QuickCheck

...

  describe &quot;properties&quot; $ do
      prop &quot;both numbers divisible a%gcd == 0, b%gcd ==0&quot; $ 
            prop_divisible
      ...