Our testing styleguide would flunk this but you're able to decide how you want to write tests.

Basically we have the following:

``` ruby
it "" do
  setup

  invoke

  assertions

  teardown
end
```

If I was to rewrite your test to follow this pattern it would look the following (minus comments):

``` ruby
it "shows a link that a user can click to see a list of their activities for the current challenge" do
  # setup
  challenge = FactoryGirl.create :challenge, start_date: Time.now - 10.days, end_date: Time.now + 21.days
  user1     = FactoryGirl.create :user, challenge: challenge, commitment: 2000
  user2     = FactoryGirl.create :user, challenge: challenge, commitment: 1500
  FactoryGirl.create :activity, user: user1, value: 100, date: Time.now - 2.days
  FactoryGirl.create :activity, user: user1, value: 5, date: Time.now - 1.days

  # invoke
  visit dashboard_path
  click_link user1.prefered_name

  # assertions
  expect(current_path).to eq(user_activities_path(user1))
  expect(page).to have_text(user1.prefered_name)
  expect(page).to have_text(user1.activities.first.value)
  expect(page).to have_text(user1.activities.first.date)
  expect(page).to have_text(user1.activities.last.value)
  expect(page).to have_text(user1.activities.last.date)
end
```

I would even take it a step further and refactor some of the common patterns out of the setup code.

``` ruby
it "shows a link that a user can click to see a list of their activities for the current challenge" do
  # setup
  challenge = create_challenge start_date: 10.days.ago, end_date: 21.days.from_now
  user1     = create_user challenge: challenge, commitment: 2000
  user2     = create_user challenge: challenge, commitment: 1500
  create_activity user: user1, value: 100, date: 2.days.ago
  create_activity user: user1, value: 5, date: 1.day.ago

  # rest of code...
end

def create_challenge attributes = {}
  FactoryGirl.create :challenge, attributes
end

def create_user attributes = {}
  FactoryGirl.create :user, attributes
end

def create_activity attributes = {}
  FactoryGirl.create :activity, attributes
end
```

So what I've done here is create factory methods (e.g. `create_challenge`) - they're a small wrapper around factory girl which would allow you to change out factory girl without your actual tests changing. This is a new pattern for me and I've found it extremely helpful for reducing duplication. I've also used a rails extension to the date class and change code from `Date.today - 10.days` to `10.days.ago`. Something you want to keep in mind is that if some attributes are not required (like passing `commitment` to `create_user`) you should remove them as they add unrequired noise to the test. I also see that you've setup an extra user `user2` but you never mention it in the test. I would probably have an `expect` saying "I do not see `user2` in my list or something similar - otherwise it's noise that is not required.

Lastly we try and stick to 1 assertion per test. At the moment you have 6. I'm not 100% sure on a way to clean this up but something to keep in mind.