#include <bits/stdc++.h>
using namespace std;
long long int n, m;
long long int visited[101][101];
char arr[101][101];
bool valid(long long int i, long long int j) {
  if (i >= 0 && i < n && j >= 0 && j < m)
    return true;
  else
    return false;
}
void dfs(long long int i, long long int j) {
  if (visited[i][j] == 1) return;
  visited[i][j] = 1;
  if (valid(i - 1, j)) {
    if (arr[i - 1][j] != '#') {
      if (visited[i - 1][j] == 0) dfs(i - 1, j);
    }
  }
  if (valid(i + 1, j)) {
    if (arr[i + 1][j] != '#') {
      if (visited[i + 1][j] == 0) dfs(i + 1, j);
    }
  }
  if (valid(i, j - 1)) {
    if (arr[i][j - 1] != '#') {
      if (visited[i][j - 1] == 0) dfs(i, j - 1);
    }
  }
  if (valid(i, j + 1)) {
    if (arr[i][j + 1] != '#') {
      if (visited[i][j + 1] == 0) dfs(i, j + 1);
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        cin >> arr[i][j];
      }
    }
    long long int flag = 0;
    vector<pair<long long int, long long int> > vec;
    vector<pair<long long int, long long int> > vec1;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (arr[i][j] == 'B') {
          if (valid(i - 1, j)) {
            if (arr[i - 1][j] == '.') arr[i - 1][j] = '#';
            if (arr[i - 1][j] == 'G') flag++;
          }
          if (valid(i + 1, j)) {
            if (arr[i + 1][j] == '.') arr[i + 1][j] = '#';
            if (arr[i + 1][j] == 'G') flag++;
          }
          if (valid(i, j - 1)) {
            if (arr[i][j - 1] == '.') arr[i][j - 1] = '#';
            if (arr[i][j - 1] == 'G') flag++;
          }
          if (valid(i, j + 1)) {
            if (arr[i][j + 1] == '.') arr[i][j + 1] = '#';
            if (arr[i][j + 1] == 'G') flag++;
          }
        }
        if (arr[i][j] == 'G') vec.push_back(make_pair(i, j));
        if (arr[i][j] == 'B') vec1.push_back(make_pair(i, j));
      }
    }
    if (flag > 0)
      cout << "No" << endl;
    else {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) visited[i][j] = 0;
      }
      dfs(n - 1, m - 1);
      long long int k1, k2;
      for (int i = 0; i < vec.size(); i++) {
        k1 = vec[i].first;
        k2 = vec[i].second;
        if (visited[k1][k2] == 0) flag++;
      }
      for (int i = 0; i < vec1.size(); i++) {
        k1 = vec1[i].first;
        k2 = vec1[i].second;
        if (visited[k1][k2] == 1) flag++;
      }
      if (vec.size() == 0) flag = 0;
      if (flag == 0)
        cout << "Yes" << endl;
      else
        cout << "No" << endl;
    }
  }
}
